下面代码完成的是:按一下button,产生一次外部中断0信号(P3.2),启动T1定时,使P1.0引脚输出周期为1ms的方波(系统时钟6MHz)。
#include<reg52.h>
sbit P10=P1^0;
int main(){
SP=0x30; //堆栈初始化为30H
IT0=1; //外部中断跳沿(下降沿)触发
TMOD=0x26; //选择工作方式2
TL1=0x06; //T1定时器计数值低八位送TL1
TH1=0x06; //T1定时器计数值高八位送TH1
EA=1; //打开中断总开关
EX0=1; //打开外部中断0允许开关(允许外部中断0中断)
ET1=1; //打开定时器1允许开关(允许定时器T1中断)
while(1){} //等中断
return 0;
}
void xint0(void) interrupt 0{
TR1=1; //打开定时器1
}
void timer1(void) interrupt 3{
TL1=0x06; //重新装入低八位数值
TH1=0x06; //重新装入高癊4 宋皇?
P1=!P1; //P1.0电平求反
}
Protues的仿真如下图所示:
代码如有错误,欢迎指正。