久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 單片機74LS164串入并出移位寄學習--時鐘顯示匯編程序 [打印本頁]

作者: wudawei    時間: 2014-12-31 14:45
標題: 單片機74LS164串入并出移位寄學習--時鐘顯示匯編程序
本帖最后由 wudawei 于 2014-12-31 14:46 編輯

;====================================================================*
;51單片機入門程序18
;  工程名稱:  串入并出移位寄學習--時鐘顯示程序                    *
;  功能描述:   時鐘顯示程序                                       *
;  (并行輸出串行移位寄存器74LS164擴展輸出口學習)                     *
;  硬件連接:針對配合AT89S51精簡開發板(第三版本)使用               *
;  編寫日期:2009.7.4
;  編寫者:    藍柳柳                                                 *
;                                         
;====================================================================*
SDA         BIT    P0.2     ; 定義數據線引腳定義
SCL         BIT    P0.3     ; 定義時鐘線引腳定義
LED0    EQU     30H   ;定義顯示碼存儲空間
LED1    EQU     31H
LED2    EQU     32H
LED3    EQU     33H
LED4    EQU     34H
LED5    EQU     35H
LED6    EQU     36H
LED7    EQU     37H
;---------------------------------------
ORG         0000H           ;主程序入口
AJMP        MAIN            ;跳轉到主程序
ORG         0100H           ;主程序在ROM中存放位置
;===============主程序=====================
MAIN:   MOV  LED0,#00H    ;對定義的顯示碼存儲空間付初值
        MOV  LED1,#00H
        MOV  LED2,#0FFH
        MOV  LED3,#00H
        MOV  LED4,#00H
        MOV  LED5,#0FFH
        MOV  LED6,#00H
        MOV  LED7,#00H
        ACALL    DISPLAY  ;調用顯示程序
        ACALL    Delay_1s ;延時約一秒鐘
NEXT:
        INC      LED0     ;LED0中的數值加一
        MOV      A,LED0
        CJNE     A,#10,NEXT0   ;判斷LED0中的數值是否為10,如果不是則跳到NEXT0
        MOV      LED0,#00H     ;如果是則向下執行,將LED0中的內容清零
        INC      LED1         ;LED1中的數值加一
        MOV      A,LED1
        CJNE     A,#6,NEXT0 ;判斷LED1中的數值是否為6,如果不是則跳到NEXT0
        MOV      LED1,#00H  ;如果是則向下執行,將LED1中的內容清零

        INC      LED3
        MOV      A,LED3
        CJNE     A,#10,NEXT0
        MOV      LED3,#00H
        INC      LED4
        MOV      A,LED4
        CJNE     A,#6,NEXT0
        MOV      LED4,#00H
        INC      LED6
        MOV      A,LED6
        CJNE     A,#10,NEXT0
        MOV      LED6,#00H
        INC      LED7
        MOV      A,LED7
        CJNE     A,#6,NEXT0
        MOV      LED7,#00H

        AJMP     MAIN
        RET
NEXT0:  ACALL    DISPLAY
        ACALL    Delay_1s
        AJMP     NEXT
        RET
;===================================================
; 子程序名: DISPLAY
; 功能描述: 將運算的數值都移位到數碼管中顯示
;===================================================
DISPLAY:
        MOV     DPTR,#TABLE
        MOV     A,LED0
        MOVC    A,@A+DPTR ;根據LED0中的數值取表中相應的數去顯示
        ACALL   SHIFT
        MOV     A,LED1
        MOVC    A,@A+DPTR ;根據LED1中的數值取表中相應的數去顯示
        ACALL   SHIFT
        MOV     A,LED2
        MOVC    A,@A+DPTR
        ACALL   SHIFT
        MOV     A,LED3
        MOVC    A,@A+DPTR
        ACALL   SHIFT
        MOV     A,LED4
        MOVC    A,@A+DPTR
        ACALL   SHIFT
        MOV     A,LED5
        MOVC    A,@A+DPTR
        ACALL   SHIFT
        MOV     A,LED6
        MOVC    A,@A+DPTR
        ACALL   SHIFT
        MOV     A,LED7
        MOVC    A,@A+DPTR
        ACALL   SHIFT
        RET
;---------顯示代碼表---------
TABLE: DB    11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H   ;0,1,2,3,4,5,6,7,8,9,
       DB    50H,1CH,39H,16H,38H,78H, 0FFH,0FEH,0EFH      ;10,11,12,13,14,15,滅,-
;===================================================
; 子程序名: SHIFT
; 功能描述: 移位程序,將8位數據依次移進74LS164芯片中
;===================================================
SHIFT:      PUSH  A              ; 進棧暫存A值
            MOV     R0,#8        ; 循環8次
            CLR     C            ;清進位標志
            CLR     SCL          ;時鐘線,先鉗位為0
LP2:        RLC     A
            MOV     SDA,C        ;向數據線送數據
            NOP
            NOP
            SETB    SCL          ;拉高時鐘線
            NOP
            NOP
            CLR     SCL          ;拉低時鐘線
            NOP
            NOP
            DJNZ    R0,LP2
            POP   A              ; 出棧恢復A值
            RET
;===================================================
; 子程序名: Delay_1s
; 功能描述: 延時約一秒鐘
;===================================================
Delay_1s:   
            
         MOV   R1,#10
      D: MOV   R2,#200
      T: MOV   R3,#248
         DJNZ  R3,$
         DJNZ  R2,T
         DJNZ  R1,D
         RET        ;子程序返回指令,子程序的設計一般都是因為主程序要調用它,
               ;調用完是要返回到主程序繼續運行下一個語句的     
         END

     
;補充說明:
;1.用外部中斷0來編寫程序時,硬件連接一定要考慮到單片機的第12引腳
;2.外部中斷0和定時器/計數器0的中斷入口地址分別是:0003H和000BH
;在應用到這兩個內容時要在程序開始時標出
   
             希望各位的指導與賜教!





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩一二三 | 日韩不卡在线观看 | www.三级 | 日韩在线影院 | 国产欧美成人 | 国产99对白在线播放 | 亚洲男人的天堂在线观看 | 亚洲第一免费视频 | 欧美一区二区三区视频 | 中文字幕不卡视频 | 在线视频h| 中国黄色一级片 | 久久精品一 | 中文字幕一区二区三区视频 | 国产91清纯白嫩初高中在线观看 | 在线观看国产免费视频 | 中文字幕一级片 | 超碰免费在线观看 | 亚洲午夜激情 | 秋霞午夜鲁丝一区二区老狼 | 福利视频网址 | 久久国产一区二区三区 | 亚洲免费小视频 | 成人三级在线 | 日本少妇中文字幕 | 美女一级片 | 日韩精品视频免费播放 | 国产成年妇视频 | 免费黄色小视频 | 日韩999 | 日本欧美视频 | 毛片av在线 | 久久国产成人 | 久久午夜影院 | 天天爱夜夜操 | 午夜激情小视频 | 日韩一区二区三免费高清在线观看 | 日韩午夜精品 | 久久九九国产 | 曰韩av | 国产精品国产三级国产aⅴ浪潮 |