《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業界動態 > pic單片機高手實用篇,pic單片機程序設計

pic單片機高手實用篇,pic單片機程序設計

2019-11-26
來源:21ic中國電子網

單片機" target="_blank">pic單片機在學習和工作中均扮演著重要角色,在往期文章中,小編曾對pic單片機匯編指令加以介紹,以幫助大家更好掌握pic單片機。而在本文中,將介紹pic單片機程序設計內容,以助大家寫出更為優美的pic單片機程序,主要內容如下。

1、PIC單片機程序的基本格式

先介紹二條偽指令:

EQU ——標號賦值偽指令

ORG ——地址定義偽指令

PIC16C5X單片機在RESET后指令計算器PC被置為全“1”,所以PIC16C5X幾種型號芯片的復位地址為:

PIC16C54/55:1FFH

PIC16C56:3FFH

PIC16C57/58:7FFH

一般來說,PIC單片機的源程序并沒有要求統一的格式,大家可以根據自己的風格來編寫。但這里我們推薦一種清晰明了的格式供參考。

TITLE This is …… ;程序標題

;--------------------------------------

;名稱定義和變量定義

;--------------------------------------

F0    EQU  0

RTCC   EQU  1

PC    EQU  2

STATUS  EQU  3

FSR   EQU  4

RA    EQU  5

RB    EQU  6

RC    EQU  7

PIC16C54 EQU 1FFH ;芯片復位地址

PIC16C56 EQU 3FFH

PIC16C57 EQU 7FFH

;-----------------------------------------

ORG PIC16C54 GOTO MAIN   ;在復位地址處轉入主程序

ORG   0          ;在0000H開始存放程序

;-----------------------------------------

;子程序區

;-----------------------------------------

DELAY MOVLW 255

RETLW 0

;------------------------------------------

;主程序區

;------------------------------------------

MAIN

MOVLW B‘00000000’

TRIS RB       ;RB已由偽指令定義為6,即B口

LOOP

BSF RB,7 CALL DELAY

BCF RB,7 CALL DELAY

GO TO LOOP

;-------------------------------------------

END       ;程序結束

注:MAIN標號一定要處在0頁面內。

1ca3cde878cf712da6e45df27f75c08d.jpg


2、PIC單片機程序設計基礎

1) 設置 I/O 口的輸入/輸出方向

PIC16C5X單片機的I/O 口皆為雙向可編程,即每一根I/O 端線都可分別單獨地由程序設置為輸入或輸出。這個過程由寫I/O 控制寄存器TRIS f來實現,寫入值為“1”,則為輸入;寫入值為“0”,則為輸出。

MOVLW 0FH  ;0000 1111(0FH)

輸入 輸出

TRIS 6    ;將W中的0FH寫入B口控制器,

;B口高4位為輸出,低4位為輸入。

MOVLW 0C0H ; 11 000000(0C0H)

RB4,RB5輸出0 RB6,RB7輸出1

2) 檢查寄存器是否為零

如果要判斷一個寄存器內容是否為零,很簡單,現以寄存器F10為例:

MOVF 10,1      ;F10→F10,結果影響零標記狀態位Z

BTFSS STATUS,Z    ;F10為零則跳

GOTO NZ        ;Z=0即F10不為零轉入標號NZ處程序

┋          ;Z=1即F10=0處理程序

3) 比較二個寄存器的大小

要比較二個寄存器的大小,可以將它們做減法運算,然后根據狀態位C來判斷。注意,相減的結果放入W,則不會影響二寄存器原有的值。

例如F8和F9二個寄存器要比較大?。?/p>

MOVF 8,0       ;F8→W

SUBWF 9,0      ;F9—W(F8)→W

BTFSC STATUS,Z   ;判斷F8=F9否

GO TO F8=F9

BTFSC STATUS,C    ;C=0則跳

GO TO F9>F8       ;C=1相減結果為正,F9>F8

GOTO F9<

F9       ;C=0相減結果為負,F9  ┋

PIC單片機的查表程序可以利用子程序帶值返回的特點來實現。具體是在主程序中先取表數據地址放入W,接著調用子程序,子程序的第一條指令將W置入PC,則程序跳到數據地址的地方,再由“RETLW”指令將數據放入W返回到主程序。下面程序以F10放表頭地址。

MOVLW  TABLE     ;表頭地址→F10

MOVWF  10

MOVLW  1        ;1→W,準備取“1”的線段值

ADDWF  10,1      ;F10+W =“1”的數據地址

CALL  CONVERT

MOVWF  6        ;線段值置到B口,點亮LED

CONVERT MOVWF  2        ;W→PC TABLE

RETLW  0C0H      ;“0”線段值

RETLW  0F9H      ;“1”線段值

RETLW  90H       ;“9”線段值

9)“READ……DATA,RESTORE”格式程序

“READ……DATA”程序是每次讀取數據表的一個數據,然后將數據指針加1,準備取下一個數據。下例程序中以F10為數據表起始地址,F11做數據指針。

POINTER  EQU  11   ;定義F11名稱為POINTER

MOVLW   DATA

MOVWF   10     ;數據表頭地址→F10

CLRF   POINTER   ;數據指針清零

MOVF   POINTER,0

ADDWF 10,0      ;W =F10+POINTER

INCF    POINTER,1  ;指針加1

CALL CONVERT      ;調子程序,取表格數據

CONVERT MOVWF   2    ;數據地址→PC

DATA  RETLW   20H    ;數據

RETLW 15H      ;數據

如果要執行“RESTORE”,只要執行一條“CLRF POINTER”即可。

aa173bf77bb3209e22e789428e6f8a7d.jpg


10) PIC單片機 延時程序

如果延時時間較短,可以讓程序簡單地連續執行幾條空操作指令“NOP”。如果延時時間長,可以用循環來實現。下例以F10計算,使循環重復執行100次。

MOVLW D‘100’

MOVWF 10

LOOP  DECFSZ 10,1   ;F10—1→F10,結果為零則跳

GOTO LOOP

延時程序中計算指令執行的時間和即為延時時間。如果使用4MHz振蕩,則每個指令周期為1μS。所以單周期指令時間為1μS,雙周期指令時間為2μS。在上例的LOOP循環延時時間即為:(1+2)*100+2=302(μS)。在循環中插入空操作指令即可延長延時時間:

MOVLW  D‘100’

MOVWF  10

LOOP   NOP

NOP

NOP

DECFSZ 10,1

GOTO LOOP

延時時間=(1+1+1+1+2)*100+2=602(μS)。

用幾個循環嵌套的方式可以大大延長延時時間。下例用2個循環來做延時:

MOVLW   D‘100’

MOVWF   10

LOOP  MOVLW   D‘16’

MOVWF   11

LOOP1  DECFSZ   11,1

GOTO    LOOP1

DECFSZ   10,1

GOTO LOOP

延時時間=1+1+[1+1+(1+2)*16-1+1+2]*100-1=5201(μS)

以上便是小編此次帶來的全部內容,希望大家喜歡。


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
卡通动漫国产精品| 欧美性大战久久久久久久蜜臀| 妖精成人www高清在线观看| 久久黄色小说| 小嫩嫩精品导航| 亚洲综合日韩在线| 在线中文字幕日韩| 9i看片成人免费高清| 亚洲精品国产精品国自产在线| 亚洲国产女人aaa毛片在线| 伊人伊人伊人久久| 影音先锋日韩有码| 影音先锋中文字幕一区二区| 极品av少妇一区二区| 国产综合激情| 一色屋精品亚洲香蕉网站| 激情久久久久久| 黄色小说综合网站| 在线成人激情视频| 亚洲国产美国国产综合一区二区 | 国产精品高潮视频| 国产精品卡一卡二| 国产啪精品视频| 国产揄拍国内精品对白| 狠狠色综合色区| 亚洲东热激情| 亚洲麻豆一区| 亚洲一区二区三区视频| 亚洲欧美日韩精品久久久久| 欧美诱惑福利视频| 91久久精品一区二区三区| 99国产精品99久久久久久| 一本久久a久久免费精品不卡| 亚洲淫片在线视频| 欧美在线亚洲在线| 久久综合久久久久88| 女人色偷偷aa久久天堂| 欧美日韩高清不卡| 国产精品久久久久久久电影| 国产午夜精品在线观看| 1024成人| 一区二区三区四区蜜桃| 亚洲深夜激情| 久久成人18免费观看| 亚洲精品免费看| 亚洲午夜激情| 久久www成人_看片免费不卡| 欧美成人黑人xx视频免费观看| 欧美日韩亚洲国产精品| 国产欧美精品一区二区色综合| 伊人久久婷婷色综合98网| 亚洲精品视频免费观看| 亚洲欧美国产毛片在线| 亚洲国产导航| 亚洲一区日本| 久久尤物视频| 欧美四级在线| 韩国三级电影一区二区| 日韩视频在线观看免费| 欧美一区二区三区视频在线观看 | 99精品国产在热久久下载| 午夜视频一区二区| 久久伊人亚洲| 国产精品久久久久久妇女6080| 在线观看成人av| 亚洲一区二区三区免费观看| 亚洲国产欧美一区| 亚洲欧美日韩专区| 欧美成年人网站| 国产日韩在线看片| 99视频精品在线| 亚洲国产天堂网精品网站| 亚洲欧美综合v| 欧美丰满高潮xxxx喷水动漫| 国产欧美一区二区三区国产幕精品| 亚洲国产欧美一区| 欧美在线国产精品| 亚洲综合色视频| 美女久久一区| 国产人久久人人人人爽| 日韩午夜电影在线观看| 亚洲成色777777在线观看影院| 亚洲欧美清纯在线制服| 欧美精品在线免费观看| 国内精品久久久久影院薰衣草| 亚洲一区二区不卡免费| 日韩一级在线| 久久综合婷婷| 国产一区二区久久精品| 亚洲小说区图片区| 这里只有精品视频在线| 裸体一区二区| 国产一区二区欧美日韩| 亚洲影音一区| 亚洲中字黄色| 欧美涩涩网站| 亚洲清纯自拍| 亚洲精品日韩在线观看| 狂野欧美激情性xxxx| 国产一区二区精品在线观看| 亚洲伊人伊色伊影伊综合网| 亚洲午夜激情| 欧美日韩国产va另类| 亚洲国产成人精品久久| 久久国产婷婷国产香蕉| 欧美在线不卡视频| 国产乱人伦精品一区二区 | 欧美成人国产| 激情六月综合| 久久国产精品72免费观看| 久久精品国产99| 国产亚洲aⅴaaaaaa毛片| 亚洲伊人久久综合| 亚洲欧美日韩人成在线播放| 国产精品av免费在线观看| 一区二区三区|亚洲午夜| 一区二区日韩精品| 欧美日韩一区二区三区四区在线观看| 最新日韩精品| 日韩一区二区精品视频| 欧美国产视频日韩| 亚洲国产精品www| 亚洲区国产区| 欧美不卡视频一区发布| 亚洲国产精品成人综合| 亚洲黄色毛片| 欧美国产欧美亚州国产日韩mv天天看完整| 国产专区精品视频| 久久精品一二三| 媚黑女一区二区| 亚洲激情亚洲| 亚洲图片欧美午夜| 欧美色另类天堂2015| 亚洲午夜精品国产| 西瓜成人精品人成网站| 国产无一区二区| 久久精品国产清高在天天线| 欧美成年人视频网站| 亚洲每日在线| 亚洲欧美日韩一区| 国产一区亚洲| 亚洲日本成人在线观看| 欧美剧在线观看| 亚洲一区二区三区涩| 久久不射网站| 亚洲国产精品www| 亚洲午夜精品久久| 国产欧美 在线欧美| 欧美专区中文字幕| 欧美激情偷拍| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久国产一区二区| 亚洲夫妻自拍| 亚洲午夜久久久久久久久电影院 | 在线视频日本亚洲性| 国产精品久久久久91| 香港久久久电影| 欧美aaa级| 在线视频亚洲| 久久久国际精品| 亚洲精品少妇| 久久不射中文字幕| 亚洲激情婷婷| 午夜免费在线观看精品视频| 好吊视频一区二区三区四区 | 狠狠入ady亚洲精品| 日韩网站在线看片你懂的| 国产精品裸体一区二区三区| 久久激情婷婷| 欧美日韩一区二区三区在线观看免| 香蕉久久国产| 欧美日韩国产三区| 欧美在线观看一区二区| 欧美精品性视频| 欧美亚洲在线播放| 欧美激情亚洲综合一区| 亚洲一区视频在线观看视频| 欧美ed2k| 午夜国产不卡在线观看视频| 欧美激情一区二区三区在线视频观看| 亚洲特黄一级片| 欧美成人一区二区| 性做久久久久久| 欧美日韩国产二区| 久久国产一区二区| 国产精品乱码一区二三区小蝌蚪| 91久久精品www人人做人人爽| 国产精品久久| 亚洲精品国偷自产在线99热| 国产精品私房写真福利视频| 日韩亚洲欧美一区二区三区| 国产日韩在线播放| 亚洲一区二区黄色| 亚洲国产精品久久久久| 欧美一区二区精品| 日韩一级片网址| 欧美成人免费在线观看| 欧美一级欧美一级在线播放| 国产精品啊v在线| 亚洲裸体视频|