欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4538|回復: 0
打印 上一主題 下一主題
收起左側

單片機74LS164串入并出移位寄學習--時鐘顯示匯編程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:71407 發表于 2014-12-31 14:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 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
;在應用到這兩個內容時要在程序開始時標出
   
             希望各位的指導與賜教!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表