实验3 定时器中断实验
一、 实验目的
掌握MCS-51定时器的使用方法
二、 实验设备
AT89c51基本实验单元、计算机设备系统
三、 实验原理
(一) 实验说明
(1) 利用定时器中断方式,做一个显示0~9的秒钟。
(2) 利用定时器中断方式,做一个显示00~99的秒钟,每一秒增加1.
(二) 程序流程图
(i)
运行程序 显示 计数清零 开启中断 设置中断间隔 Y N 计数小于9 判定中断次 计数加1
(ii)
Y 中断20次 N
运行程序 十位加1 开启中断 个位清零 设置中断间隔 显示 Y N 个位小于9 判定中断次 个位数加1 Y 中断20次 N
(三) 参考程序
内容(1):只需要将内容2的代码中十位显示那一部分删除,并令D24=0即可。
内容(2):
#include
unsigned char sum1=0,sum2=0; sbit D24=P2^4; sbit D25=P2^5;
static unsigned char t; unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay(unsigned int); void main() { TMOD=0x10; TL1=0xf0; TH1=0xd8; EA=1; ET1=1; TR1=1; while(1) { P0=0xff; D24=1; D25=0; P0=table[sum2]; //十 位 delay(50); P0=0xff; D24=0; D25=1; P0=table[sum1]; //个 位 delay(50); } }
void delay(unsigned int m) { unsigned int i,j; for(i=0;i void timer0() interrupt 3 { TL1=0xf0; TH1=0xd8; t++; } if(t==100) { t=0; sum1++; if(sum1>9) { sum1=0; sum2++; if(sum2>9) sum2=0; } } 四、 实验步骤: 1. 根据实验原理图编写程序,用“Keil uVision4”编译软件进行编译,如未通过,修改 程序,直至通过。 2. 用STC-ISP.EXE软件将所编程序的“hex”码下载到试验板子的STC89C52芯片 中。 3. 运行程序,观察实验板上LED数码管是否是每个1秒出现0~9的显示变化。如果不 符合要求,修改程序,按照步骤1开始重新做实验,直至成功。 4. 按同样的方法调试编写实验内容2中的程序,直至调试成功。 五、 思考题 写出用LED完成实验内容2的程序,并进行调试。 代码见前面参考程序 六、 实验原理图