在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

            本文引用地址:http://www.biyoush.com/article/201807/384748.htm

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

            源程序代碼說明

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

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

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

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

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

            #INCLUDE ; 將含文檔P16F877.INC包含進(jìn)程序中來

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

            ENDC ; 聲明結(jié)束

            ;

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

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

            DLY ; 延時(shí)變量

            DISPNUM0 ; 個(gè)位寄存器

            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 ; 將十六進(jìn)制數(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ù)碼管顯示子程序?yàn)檠訒r(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ù)碼管個(gè)位值到W

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

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

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

            CLRF DISPNUM0 ; 是,將DISPNUM清0

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

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

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

            LEDDISP4:

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

            CALL CONVERT ; 查表取回?cái)?shù)碼管顯示碼

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

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

            MOVWF PORTB ; 送端口B點(diǎn)亮個(gè)位數(shù)碼管

            CALL DELAY2_5MS ; 延進(jìn)2.5MS

            MOVLW 0xFF

            MOVWF PORTB

            ;

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

            CALL CONVERT ; 查表取回?cái)?shù)碼管顯示碼

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

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

            MOVWF PORTB ; 送端口B點(diǎn)亮個(gè)位數(shù)碼管

            CALL DELAY2_5MS ; 延進(jìn)2.5MS

            MOVLW 0xFF

            MOVWF PORTB

            ;

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

            CALL CONVERT ; 查表取回?cái)?shù)碼管顯示碼

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

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

            MOVWF PORTB ; 送端口B點(diǎn)亮個(gè)位數(shù)碼管

            CALL DELAY2_5MS ; 延進(jìn)2.5MS

            MOVLW 0xFF

            MOVWF PORTB

            ;

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

            CALL CONVERT ; 查表取回?cái)?shù)碼管顯示碼

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

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

            MOVWF PORTB ; 送端口B點(diǎn)亮個(gè)位數(shù)碼管

            CALL DELAY2_5MS ; 延進(jìn)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延時(shí)子程序包含進(jìn)程序中 ;

            ; 晶振16MHz時(shí)延時(shí)2.5毫秒 ;

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

            END



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

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉