日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于PIC16F877的四位數(shù)碼管動態(tài)顯示PROTEUS仿真

          基于PIC16F877的四位數(shù)碼管動態(tài)顯示PROTEUS仿真

          作者: 時間:2018-07-31 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://yuyingmama.com.cn/article/201807/384748.htm

          本文為基于PIC16F877的四位動態(tài)顯示PROTEUS仿真。

          源程序代碼說明

          ;*********************************************

          ;** 文件名:four_led.asm **

          ;** 功 能:四位動態(tài)顯示1234 **

          ;*********************************************

          LIST P=16F877,R=DEC ; 設(shè)定匯編參數(shù)為PIC16F877,默認數(shù)制為十進制

          #INCLUDE ; 將含文檔P16F877.INC包含進程序中來

          CBLOCK 0x20 ; 設(shè)定自定義寄存器從0x20單元開始存放

          ENDC ; 聲明結(jié)束

          ;

          ;-------- 定義寄存器 ------------

          CBLOCK ; 聲明以下為自定義寄存器

          DLY ; 延時變量

          DISPNUM0 ; 個位寄存器

          DISPNUM1 ; 數(shù)碼管十位寄存器

          DISPNUM2 ; 數(shù)碼管百位寄存器

          DISPNUM3 ; 數(shù)碼管千位寄存器

          ENDC ; 聲明自定義寄存器結(jié)束

          ;--------- 初始化程序 -----------

          ;

          ORG 0 ; 程序從0000H單元開始執(zhí)行

          NOP ; ICD必需的空操作指令

          BANKSEL TRISB ; 選擇BANK1

          MOVLW 0 ; 將0送入W

          MOVWF TRISB ; 再送入端口方向控制寄存器TRISB,設(shè)定端口B全部為輸出

          MOVWF TRISD

          BANKSEL PORTB ; 回到BANK0

          MOVLW 0FFH ; 將十六進制數(shù)0xFF送W

          MOVWF PORTB ; 再轉(zhuǎn)到端口B數(shù)據(jù)寄存器PORTB關(guān)閉所有數(shù)碼管

          MOVLW 0 ; 預(yù)設(shè)數(shù)碼管顯示初值

          MOVWF DISPNUM3

          MOVLW 1

          MOVWF DISPNUM2

          MOVLW 2

          MOVWF DISPNUM1

          MOVLW 3

          MOVWF DISPNUM0

          ;------------- 主程序 -----------

          MAIN:

          MOVLW 0x32

          MOVWF DLY

          M0:

          CALL LEDDISP4 ; 呼叫數(shù)碼管顯示子程序顯示

          DECFSZ DLY,1 ; 重復(fù)調(diào)用數(shù)碼管顯示子程序為延時程序

          GOTO M0

          MOVF DISPNUM2,0 ; 取出數(shù)碼管百位的值到W

          MOVWF DISPNUM3 ; 再由W送到數(shù)碼管千位

          MOVF DISPNUM1,0 ; 取出數(shù)碼管十位的值到W

          MOVWF DISPNUM2 ; 再轉(zhuǎn)到數(shù)碼管百位

          MOVF DISPNUM0,0 ; 取出數(shù)碼管個位值到W

          MOVWF DISPNUM1 ; 再轉(zhuǎn)入數(shù)碼管十位

          INCF DISPNUM0,1 ; 將數(shù)碼管個位的值1,結(jié)果存回DISPNUM0

          BTFSC DISPNUM0,4 ; 判斷數(shù)碼管個位寄存器的值是否大于0x0F

          CLRF DISPNUM0 ; 是,將DISPNUM清0

          GOTO MAIN ; 循環(huán)執(zhí)行

          ;----------- 主程序結(jié)束 ---------

          ;----- 四位數(shù)碼管顯示子程序 -----

          LEDDISP4:

          MOVF DISPNUM0,0 ; 取數(shù)碼管個位寄存器的值到W

          CALL CONVERT ; 查表取回數(shù)碼管顯示碼

          MOVWF PORTD ; 送端口數(shù)據(jù)寄存器PORTD顯示

          MOVLW 0xFE ; 個位數(shù)碼管顯示控制嗎0xFE送W

          MOVWF PORTB ; 送端口B點亮個位數(shù)碼管

          CALL DELAY2_5MS ; 延進2.5MS

          MOVLW 0xFF

          MOVWF PORTB

          ;

          MOVF DISPNUM1,0 ; 取數(shù)碼管個位寄存器的值到W

          CALL CONVERT ; 查表取回數(shù)碼管顯示碼

          MOVWF PORTD ; 送端口數(shù)據(jù)寄存器PORTD顯示

          MOVLW 0xFD ; 個位數(shù)碼管顯示控制嗎0xFE送W

          MOVWF PORTB ; 送端口B點亮個位數(shù)碼管

          CALL DELAY2_5MS ; 延進2.5MS

          MOVLW 0xFF

          MOVWF PORTB

          ;

          MOVF DISPNUM2,0 ; 取數(shù)碼管個位寄存器的值到W

          CALL CONVERT ; 查表取回數(shù)碼管顯示碼

          MOVWF PORTD ; 送端口數(shù)據(jù)寄存器PORTD顯示

          MOVLW 0xFB ; 個位數(shù)碼管顯示控制嗎0xFE送W

          MOVWF PORTB ; 送端口B點亮個位數(shù)碼管

          CALL DELAY2_5MS ; 延進2.5MS

          MOVLW 0xFF

          MOVWF PORTB

          ;

          MOVF DISPNUM3,0 ; 取數(shù)碼管個位寄存器的值到W

          CALL CONVERT ; 查表取回數(shù)碼管顯示碼

          MOVWF PORTD ; 送端口數(shù)據(jù)寄存器PORTD顯示

          MOVLW 0xF7 ; 個位數(shù)碼管顯示控制嗎0xFE送W

          MOVWF PORTB ; 送端口B點亮個位數(shù)碼管

          CALL DELAY2_5MS ; 延進2.5MS

          MOVLW 0xFF

          MOVWF PORTB

          ;

          RETURN ; 返回子程序呼叫處

          ;--- 四位數(shù)碼管顯示子程序結(jié)束 ---

          ;---------- 查表子程序 ----------

          CONVERT:

          ADDWF PCL ; 把W的值加到PC的低8位

          TABLE:

          RETLW H'C0' ; 0

          RETLW H'F9' ; 1

          RETLW H'A4' ; 2

          RETLW H'B0' ; 3

          RETLW H'99' ; 4

          RETLW H'92' ; 5

          RETLW H'82' ; 6

          RETLW H'F8' ; 7

          RETLW H'80' ; 8

          RETLW H'90' ; 9

          RETLW H'88' ; A

          RETLW H'83' ; b

          RETLW H'C6' ; C

          RETLW H'A1' ; d

          RETLW H'86' ; E

          RETLW H'8E' ; F

          ;-----------查表子程序結(jié)束----------;

          ;===================================

          #INCLUDE ; 將2.5MS延時子程序包含進程序中 ;

          ; 晶振16MHz時延時2.5毫秒 ;

          ;===================================

          END



          關(guān)鍵詞: 單片機 數(shù)碼管

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉