⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 网上题目4.asm

📁 单片机的。实现C51单片机的流水线功能。渐亮。逐亮逐灭
💻 ASM
字号:
           ;单片机   AT89C51
           ;晶振频率是12MHZ
           ;P1口  红色发光二极管
           ;用51的P1口控制8个LED,1 点亮,0 熄灭。

           ;题目:第4,
           ;最难的:8个灯从第一个开始依次渐亮,直到最后一个。
           ;再从最后一个起渐暗,直到第一个。如此循环往复。这才是真正的流水灯。

           ORG    0000H                ;定义当前位置为 0000H
           LJMP   MIAN                 ;转主程序 短转移到 MIAN,
           ORG    000BH                ;定义当前位置为 000BH
           LJMP   ZC1                  ;转中断程序  T0 短转移到 ZC1,
           ORG    001BH                ;定义当前位置为 001BH
           LJMP   ZC2                  ;转中断程序  T1 短转移到 ZC2,
           ORG   0030H                 ;定义当前位置为 0030H

MIAN:      MOV   SP,    #60H           ;设堆栈指针 传送 SP,立即数60H
           MOV   TMOD,  #11H           ;定时器初始化,工作方式1. (65536) 传送 TMOD,立即数11H
           MOV   TH0,   #0FFH          ;传送 TH0,立即数0FFH 传送 TH0,立即数0FFH
           MOV   TL0,   #0DDH          ;定时器T0定时35us. 传送 TL0,立即数0F6H
           MOV   TH1,   #0D8H          ;传送 TH1,立即数0D8H 传送 TH1,立即数0D8H
           MOV   TL1,   #0F0H          ;定时器T1定时10ms 传送 TL1,立即数0F0H
           MOV   IE,    #8AH           ;传送 IE,立即数8AH 传送 IE,立即数8AH
           MOV   R1,    #8             ;传送  通用寄存器1,立即数200
           MOV   A,     R1             ;传送 寄存器A,R1
           MOV   R2,    #2             ;传送 通用寄存器2,立即数2
           MOV   R0,    #1             ;传送 通用寄存器0,立即数1
           MOV   P1,    #00H           ;传送 接口1,立即数00H
           SETB  TR1                   ;开定时器T1定时5ms 位-置1 TR1,
           CLR   TR0                   ;关定时器T0定时19US 清0 TR0,
           CLR    P1.0                 ;清0 接口1第0位 清0 接口1第0位,
           SJMP  $                     ;等带 短转移到 到本行,

ZC1:       CJNE  R2,    #2,    L1      ;比较-不等转移 通用寄存器2,立即数2,
           DJNZ  R1,    L              ; 减一不为0转移 通用寄存器1,
           DEC   A                     ;A减1 减1 寄存器A, 减1 寄存器A,
           MOV   R1,    A
           CJNE  A,     #1,    L2      ;比较-不等转移 寄存器A,立即数1,
L1:        DJNZ  R0,    L              ;减一不为0转移 通用寄存器0,L
           INC   A                     ;A加1 加1 寄存器A, 加1 寄存器A,
           MOV   R0,    A              ;传送 通用寄存器0,寄存器A
           MOV   R2,    #3             ;传送 通用寄存器2,立即数3
L2:        CPL   P1.0                  ;取反
           CPL   P1.2
           CPL   P1.4
           CPL   P1.6
           MOV   C,  P1.0
           CPL   C
           MOV   P1.1,  C
           MOV   P1.3,  C
           MOV   P1.5,  C
           MOV   P1.7,  C
L4:        CLR   TR0                   ;清0 TR0 清0 TR0,
           CJNE  A,     #200,   L3     ;比较-不等转移 寄存器A,立即数200
           MOV   R1,    #200           ;传送 通用寄存器1,立即数200
           MOV   R2,    #2             ;传送 通用寄存器2,立即数2
           MOV   R0,    #1             ;传送 通用寄存器0,立即数1
           SJMP  L3                    ;短转移到 L3 短转移到 L3,
L:         SETB  TR0                   ;位-置1 TR0 位-置1 TR0,
L3:        MOV   TH0,   #0FFH          ;传送 TH0,立即数0FFH   35US       
           MOV   TL0,   #0DDH          ;定时器T0定时10US. 传送 TL0,立即数0F6H
           RETI                        ;中断返回 中断返回

ZC2:       MOV   P1,    #55H           ;传送 接口1,立即数0FFH
           MOV   TH1,   #0D8H          ;传送 TH1,立即数0D8H
           MOV   TL1,   #0F0H          ;定时器T1定时10ms 65536 传送 TL1,立即数0F0H   
           SETB  TR0                   ;位-置1 TR0 位-置1 TR0,
           SETB  TR1                   ;位-置1 TR1 位-置1 TR1,     
           RETI                        ;中断返回 中断返回                
           END                         ;END






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -