|
各位同学:
我用的是HC6800-ES V2.0的板子,有没有同学兴趣一起学习汇编语言,来学习板子上的硬件功能。先上传简单的几个程序,抛砖引玉。
LED闪烁
ORG 0000H
AJMP START
ORG 000BH ;定时器0的中断向量地址
AJMP TIME0 ;跳转到真正的定时器程序处
ORG 30H
START:
MOV P2,#0FFH ;关所灯;需要弄清楚哪个口输出LED
MOV 30H,#00H ;软件计数器预清0
MOV TMOD,#00000001B ;定时/计数器0工作于方式1
MOV TH0,#3CH
MOV TL0,#0B0H ;即数15536
SETB EA ;开总中断允许
SETB ET0 ;开定时/计数器0允许
SETB TR0 ;定时/计数器0开始运行
LOOP: AJMP LOOP ;真正工作时,这里可写任意程序
TIME0: ;定时器0的中断处理程序
PUSH ACC
PUSH PSW ;将PSW 和ACC 推入堆栈保护
INC 30H
MOV A,30H
CJNE A,#20,T_RET ;30H 单元中的值到了20了吗?
T_L1: CPL P1.0 ;到了,取反P10
MOV 30H,#0 ;清软件计数器
T_RET:
MOV TH0,#15H
MOV TL0,#9FH ;重置定时常数
POP PSW
POP ACC
RETI
END
|
|