📄 网上题目2.asm
字号:
;单片机 AT89C51
;晶振频率是12MHZ
;P1口 红色发光二极管
;用51的P1口控制8个LED,1 点亮,0 熄灭。
;题目:第2,
;第1个亮1/8,第2个亮2/8,第3个亮3/8,第4个亮4/8,
;第5个亮5/8,第6个亮68,第7个亮78,第8个全亮
ORG 0000H
SJMP MIAN ;转主程序
ORG 000BH
SJMP ZC1 ;转中断程序 T0
ORG 001BH
SJMP ZC2 ;转中断程序 T1
ORG 0030H
MIAN: MOV SP, #60H ;设堆栈指针
MOV TMOD, #11H ;定时器初始化,工作方式1. (65536)
MOV TH0, #0FFH
MOV TL0, #9CH ;定时器T0定时0.1mS.
MOV TH1, #0F6H
MOV TL1, #3CH ;定时器T1定时2.5ms
MOV IE, #8AH
MOV R0, #8
SETB TR1 ;开定时器T1定时5ms
CLR TR0 ;关定时器T0定时0.25ms
MOV P1, #00H
SJMP $ ;等带
ZC1: DJNZ R0, L1 ;减1与0比较,不相等则转移,相等则继续执行.
MOV R0, #8
SJMP L
L1: CJNE R0, #7, L2 ;比较两个操作数之大小,不为0则转移,相等则继续执行.
MOV P1, #80H
SJMP L
L2: CJNE R0, #6, L3 ;比较两个操作数之大小,不相等则转移,相等则继续执行.
MOV P1, #0C0H
SJMP L
L3: CJNE R0, #5, L4 ;比较两个操作数之大小,不相等则转移,相等则继续执行.
MOV P1, #0E0H
SJMP L
L4: CJNE R0, #4, L5 ;比较两个操作数之大小,不相等则转移,相等则继续执行.
MOV P1, #0F0H
SJMP L
L5: CJNE R0, #3, L6 ;比较两个操作数之大小,不相等则转移,相等则继续执行.
MOV P1, #0F8H
SJMP L
L6: CJNE R0, #2, L7 ;比较两个操作数之大小,不相等则转移,相等则继续执行.
MOV P1, #0FCH
SJMP L
L7: CJNE R0, #1, L8 ;比较两个操作数之大小,不相等则转移,相等则继续执行.
L8: MOV P1, #0FEH
L: MOV TH0, #0FFH
MOV TL0, #9CH ;定时器T0定时0.1mS.
CLR TR0
RETI
ZC2: MOV P1, #0FFH
MOV TH1, #0F6H
MOV TL1, #3CH ;定时器T1定时2.5ms
SETB TR1
SETB TR0
RETI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -