ST套件數(shù)碼管靜態(tài)顯示試驗(yàn)(學(xué)習(xí)查表程序) ;本實(shí)驗(yàn)的目的是讓大家熟悉數(shù)碼管,學(xué)習(xí)怎樣應(yīng)用查表程序,本程序的功能是要用PIC來實(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上顯示出來。該例給出 ;計(jì)數(shù)值與顯示碼的轉(zhuǎn)換方法。 ;PIC單片機(jī)學(xué)習(xí)網(wǎng)-----http://www.pic16.com ;燒寫時(shí)應(yīng)注意:配置位已經(jīng)在程序中寫明,加載HEX文件時(shí)會(huì)自動(dòng)加載,燒寫時(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 ;沒有代碼保護(hù) ;看門狗關(guān)閉 ;上電廷時(shí)器開啟 ;振蕩器模式為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
|