專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)
;本實(shí)例的目的是讓大家進(jìn)一步了解鍵盤程序,數(shù)碼管程序。;
本實(shí)例的功能是用DIGIT作計(jì)數(shù)器,按S2一下計(jì)數(shù)器加1,加到9時(shí)計(jì)數(shù)器不再向上加;
按S3一下計(jì)數(shù)器減1,減到0時(shí),計(jì)數(shù)不再減,同時(shí)計(jì)數(shù)器的值送數(shù)碼管2靜態(tài)顯示;
燒寫時(shí)應(yīng)注意:配置位已經(jīng)在程序中寫明,加載HEX文件時(shí)會(huì)自動(dòng)加載,燒寫時(shí)不用再手動(dòng)設(shè)置配置位。;
實(shí)驗(yàn)時(shí)請注意套件跳線選擇;
;*
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 03
HPORTA EQU 05H
PORTB EQU 06H
TRISA EQU 5H
TRISB EQU 6H;
———————————-STATUS
RP0 EQU 5
;———————————-
COUNTER EQU 10H ;
DIGIT EQU 11H
COUNT1 EQU 12H
COUNT2 EQU 13H
TABADD EQU 14H;
ORG 0000H
MAIN
CLRF PORTA ;初始IO口
CLRF PORTB
BSF
STATUS,RP0 ;設(shè)置數(shù)據(jù)寄存器體1
MOVLW 00011000B ;設(shè)置SW2,SW3口為輸入、其它口全部為輸出
MOVWF TRISA
CLRW
MOVWF TRISB
BCF STATUS,RP0 ;恢復(fù)數(shù)據(jù)寄存器體0
CLRF DIGIT ;清計(jì)數(shù)器
GOTO LOOP1 ;先顯示0
;———————————
LOOP
BTFSS PORTA,3 ;掃描鍵S2是否有按下
GOTO SET_1
BTFSS PORTA,4 ;掃描鍵S3是否有按下
GOTO SET_2
GOTO LOOP ;循環(huán)掃描
LOOP1 ;數(shù)碼管顯示程序
MOVLW TABLE ;將轉(zhuǎn)換表的首地址存入TABADD
MOVWF TABADD
MOVFW DIGIT
ADDWF TABADD,W ;計(jì)數(shù)值(W)與轉(zhuǎn)換表的起始地址相加
CALL CONVERT ;存入W后調(diào)用轉(zhuǎn)換表子程序
MOVWF PORTB ;取出的七段顯示碼送RB口顯示
BSF PORTA,1 ;讓一位數(shù)碼管亮
GOTO LOOP
;————————————————-
SET_1
BTFSC PORTA,3 ;去除鍵抖動(dòng)
GOTO LOOP
CALL DELAY
BTFSC PORTA,3
GOTO LOOP
MOVLW 09H ;計(jì)數(shù)值為9后不再加1
XORWF DIGIT,0
BZ LOOP
INCF DIGIT,1 ;不為9計(jì)數(shù)值加1
GOTO LOOP1 ;到數(shù)碼管顯示
;————————————————-
SET_2 BTFSC PORTA,4 ;去除鍵抖動(dòng)
GOTO LOOP
CALL DELAY
BTFSC PORTA,4
GOTO LOOP
MOVF DIGIT,1 ;計(jì)算值為0后不再減1
BZ LOOP
DECF DIGIT,1 ;不為0計(jì)數(shù)值減1
GOTO LOOP1 ;到數(shù)碼管顯示
;————————————————-
DELAY ;設(shè)置延時(shí)常數(shù)
MOVLW 150
MOVWF COUNT1
L2 MOVLW 255
MOVWF COUNT2
L3 DECFSZ COUNT2,1 ;遞減循環(huán)?
GOTO L3
DECFSZ COUNT1,1
GOTO L2
RETLW 0
;—————————— —————————————————
CONVERT MOVWF PC
;將W寄存器內(nèi)的7段顯示碼地址放入PC
TABLE ; PC執(zhí)行新地址指令, 跳到相對的地址執(zhí)行?
RETLW 081H ;0 ;RETLW指令,將七段顯示碼存入W后返回
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
;——- ———————————————————————-
END