找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8682|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

【推薦】ST套件數(shù)碼管靜態(tài)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:4257 發(fā)表于 2008-8-14 15:40 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
ST套件數(shù)碼管靜態(tài)顯示試驗(yàn)(學(xué)習(xí)查表程序)
;本實(shí)驗(yàn)的目的是讓大家熟悉數(shù)碼管,學(xué)習(xí)怎樣應(yīng)用查表程序,本程序的功能是要用PIC來實(shí)現(xiàn)一位
;數(shù)碼管顯示,程序復(fù)位后先由第一個數(shù)碼管從0循環(huán)顯示到9,再由第二個數(shù)碼管從0顯示到9,然后再
;由第一個數(shù)碼管顯示返復(fù)循環(huán)。程序中用一個計(jì)數(shù)器由0計(jì)數(shù)到9,同時將其在LED上顯示出來。該例給出
;計(jì)數(shù)值與顯示碼的轉(zhuǎn)換方法。
;PIC單片機(jī)學(xué)習(xí)網(wǎng)-----http://www.pic16.com
;燒寫時應(yīng)注意:配置位已經(jīng)在程序中寫明,加載HEX文件時會自動加載,燒寫時不用再手動設(shè)置配置位。
;實(shí)驗(yàn)時請注意套件跳線選擇;
;****************************************************************
  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)閉
                                              ;上電廷時器開啟
                                              ;振蕩器模式為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ù)
       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í)行新地址指令, 跳到相對的地址執(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
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表