1.实验题目:
利用定时器T0的16位不可重加载模式,编制一段程序,只有当INT0(P3.2)引脚输出高电平时,在P1.6输出一个方波控制一个指示灯。设单片机的时钟为12MHz,输出周期为200ms的方波,观察指示灯的变化。
2.KEIL代码
#include<reg51.h>
sbit OUT=P1^6;
sbit P32=P3^2;
void Int0_Init();
void main()
{
Int0_Init();
TMOD &=0X0F;
TMOD |=0x09;//选择定时器T0的工作模式1
TH0 = (65536 - 50000)/256;//高四位初值
TL0 = (65536 - 50000)%256;//低四位初值,每隔50ms溢出
EA = 1; //开总中断
ET0 = 1;
TR0 = 1; //开启定时器
P32=0;
while(1);
}
void Int0_Init()//编写外部中断1初始化函数
{
EX1=1;//开启外部中断1
IT1=0;//设定为上升沿下降沿均可触发
IE1=0;//清零中断标志位
}
void Timer0_isr(void) interrupt 1 using 1
{
static unsigned int i = 0;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;//设置的为溢出一次为50ms
i++;
if(i==4)
{
i=0;
OUT=~OUT; //用示波器可看到方波输出
}
}
3.Protues仿真
P3.2引脚为低电平时(开关未闭合)
P3.2引脚为高电平时(开关闭合)