專(zhuān)注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)
深圳市英銳恩科技有限公司:臺(tái)灣麥肯單片機(jī)(Micon MDT單片機(jī))亞太地區(qū)A級(jí)代理商
靜態(tài)數(shù)碼管顯示實(shí)驗(yàn)
本實(shí)驗(yàn)的目的是讓大家熟悉數(shù)碼管,學(xué)習(xí)怎樣應(yīng)用查表程序,本程序的功能是要用PIC來(lái)實(shí)現(xiàn)一位
;數(shù)碼管顯示,程序復(fù)位后先由第一個(gè)數(shù)碼管從0循環(huán)顯示到9,再由第二個(gè)數(shù)碼管從0顯示到9,然后再
;由第一個(gè)數(shù)碼管顯示返復(fù)循環(huán)。程序中用一個(gè)計(jì)數(shù)器由0計(jì)數(shù)到9,同時(shí)將其在LED上顯示出來(lái)。該例給出
;計(jì)數(shù)值與顯示碼的轉(zhuǎn)換方法。
;燒寫(xiě)時(shí)應(yīng)注意:配置位已經(jīng)在程序中寫(xiě)明,加載HEX文件時(shí)會(huì)自動(dòng)加載,燒寫(xiě)時(shí)不用再手動(dòng)設(shè)置配置位。
;實(shí)驗(yàn)時(shí)請(qǐng)注意套件跳線選擇;
;****************************************************************
LIST P=16F84A,R=DEC ;定義器件為16F84,默認(rèn)數(shù)制為十進(jìn)制
;-----------------------------------------------
__CONFIG B'11111111110001';_CP_OFF&_WDT_OFF&_PWRITE_ON&_XT_OSC
;沒(méi)有代碼保護(hù)
;看門(mén)狗關(guān)閉
;上電廷時(shí)器開(kāi)啟
;振蕩器模式為XT
;---------------------
PC EQU 02H ;變量單元定義
STATUS EQU 03H
PORTA EQU 05H
PORTB EQU 06H
TRISA EQU 5H
TRISB EQU 6H
;-----------------------STATUS
RP0 EQU 5
;-----------------------
COUNTER EQU 10H
COUNT0 EQU 11H
COUNT1 EQU 12H
COUNT2 EQU 13H
TABADD EQU 14H
;--------------------
ORG 0000H
MAIN
CLRF PORTA
CLRF PORTB ;初始IO口
BSF STATUS,RP0 ;設(shè)置數(shù)據(jù)寄存器體1
MOVLW 00000000B ;設(shè)置RB、RA口全部為輸出
MOVWF TRISA
MOVWF TRISB
BCF STATUS,RP0 ;恢復(fù)數(shù)據(jù)寄存器體0
;----------------------
LOOPA
MOVLW 0FFH ;讓數(shù)碼所有劃先熄滅
MOVWF PORTB
BSF PORTA,2
BCF PORTA,1 ;讓第一位數(shù)碼管顯示
LOOP1
MOVLW TABLE ;將轉(zhuǎn)換表的首地址存入TABADD
MOVWF TABADD
CLRF COUNTER ;計(jì)數(shù)器清0
CLRW
LOOP2
ADDWF TABADD,W ;計(jì)數(shù)值(W)與轉(zhuǎn)換表的起始地址相加
CALL CONVERT ;存入W后調(diào)用轉(zhuǎn)換表子程序
MOVWF PORTB ;取出的七段顯示碼送RB口顯示
CALL DELAY
INCF COUNTER,1 ;計(jì)數(shù)器加1遞增(依次顯示0,1,2,…9,。)
MOVLW 11
XORWF COUNTER,0 ;第一位顯示完后轉(zhuǎn)第二位顯示
BZ LOOPB
MOVFW COUNTER
GOTO LOOP2
;-------------------------
LOOPB
MOVLW 0FFH ;讓數(shù)碼所有劃先熄滅
MOVWF PORTB
BSF PORTA,1
BCF PORTA,2 ;讓第二位數(shù)碼管顯示
LOOP3
MOVLW TABLE
MOVWF TABADD
CLRF COUNTER
CLRW
LOOP4
ADDWF TABADD,W
CALL CONVERT
MOVWF PORTB
CALL DELAY
INCF COUNTER,1
MOVLW 11
XORWF COUNTER,0
BZ LOOPA ;第二位顯示完后轉(zhuǎn)第一位循環(huán)顯示
MOVFW COUNTER
GOTO LOOP4
;---------------------------------
DELAY ;設(shè)置延時(shí)常數(shù)
MOVLW 3
MOVWF COUNT0
L1
MOVLW 255
MOVWF COUNT1
L2
MOVLW 255
MOVWF COUNT2
L3
DECFSZ COUNT2,1 ;遞減循環(huán)
GOTO L3
DECFSZ COUNT1,1
GOTO L2
DECFSZ COUNT0,1
GOTO L1
RETLW 0
;-------------------- ----------------------------------
CONVERT
MOVWF PC ;將W寄存器內(nèi)的7段顯示碼地址放入PC
TABLE ;PC執(zhí)行新地址指令, 跳到相對(duì)的地址執(zhí)行
;RETLW指令,將七段顯示碼存入W后返回
RETLW 081H ;0
RETLW 0E7H ;1
RETLW 092H ;2
RETLW 0A2H ;3
RETLW 0E4H ;4
RETLW 0A8H ;5
RETLW 088H ;6
RETLW 0E3H ;7
RETLW 080H ;8
RETLW 0A0H ;9
RETLW 07FH ;.
;----- -----------------------------------------------
END