51单片机 C

来源:百度知道 编辑:UC知道 时间:2024/06/27 13:56:16
/* 文件名:JT 21-3.c */
/* 程序功能:交通信号灯控制 */
#include <AT89X51.H> /* 头文件 */
char count; /* 声明count为字符变量 */
bit flag; /* 声明flag为位变量 */
char sum =0; /* 声明sum为字符变量并赋初始值0 */
xhd( ); /* 信号灯函数xhd( ) */
/* ―――――――― 主函数(主程序) ―――――――――――*/
main( ) /* 主函数 */
{
TMOD=0x01; /* 设定T0为模式1 */
TH0=-(50000/256); /* 设定时器初始值50000 */
TL0=-(50000%256);
EA=1; /* 总允许中断 */
ET0=1; /* 允许定时器T0中断 */
TR0=1; /* 启动定时器工作 */

P1=0xff; /* P1初始值,关闭所有信号灯 */
xhd( ); /* 调用信号灯函数 */
}
/* ――――――― 中断函数(中断服务程序) ―――――――― */
T0_srv( ) interrupt 1 using 1 /* 中断服务程序 */
{
TH0=-(50000/256); /* 重装定时器初始值 */

定时器中断处理函数里会把flag置1

定时器中断每隔1s发生一次

===========================
你把基础打好吧

定时中断没有关啊,一直在跑啊。
count=20以后中断没有结束 继续运行啊 只是 count被置为0了而已。