一、 实验要求
- 在单片机开发板的LED灯D1~D8上实现跑马灯。LED与单片机引脚连线电路如下图:
- 单片机芯片选择AT89C51,晶振频率设为12MHz,操作参考单片机开发板使用说明。
- 跑马灯点亮的时间间隔约为1秒。
- 分别用定时器的模式1和模式2实现。(用P83的延时子程序实现)
二、 实验设计
1.整体思路
(1)初始化阶段(MAIN 程序段)
设置堆栈指针 SP 为 #60H,为程序运行时的堆栈操作预留空间,确保函数调用和局部变量存储等操作有足够的内存空间。
将寄存器 B 赋值为 #14H,用于后续控制跑马灯移动的速度和周期,作为中断次数计数器或其他与时间相关的控制参数。
配置定时器 / 计数器 0 的工作模式为模式 1(MOV TMOD,#01H)。
将初始的 LED 状态值 #0FEH(假设低电平点亮 LED,此值对应点亮除最低位外的其他 LED 灯)赋值给累加器 A,并将 A 的值输出到 P2 端口,从而设置 LED 灯的初始点亮状态。
使能定时器 0 中断(SETB ET0)、总中断(SETB EA),并启动定时器 0 开始计时(SETB TR0),为后续的定时器中断触发跑马灯状态更新做准备。
最后进入一个无限循环 SJMP HERE,等待定时器中断的发生。