📄 网上题目3-2.asm
字号:
;单片机 AT89C51
;晶振频率是12MHZ
;P1口 红色发光二极管
;用51的P1口控制8个LED,1 点亮,0 熄灭。
;题目:第3,
;所有的灯逐渐从暗到全亮,再由全亮到暗。
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, #0F6H ;定时器T0定时10us. 传送 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, #200 ;传送 通用寄存器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: MOV P1, #00H
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
MOV TL0, #0F6H ;定时器T0定时10US. 传送 TL0,立即数0F6H
RETI ;中断返回 中断返回
ZC2: MOV P1, #0FFH ;传送 接口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 + -