C语言中断调用

来源:百度知道 编辑:UC知道 时间:2024/05/17 08:28:00
已经编好其他程序,还需要编的子程序是:已将两个数送入寄存器,希望将第一个数送入定时器,待定时器时间到后使P1.0置高,立即将第二数送入定时器,待定时器时间到后使P1.1置高,该如何编程;C语言中断如何写?使用的是AT89S51单片机
void main (void)
{uint16 u,v;
int8 w=0,x=0,y=0,z=0;
while(1) // 死循环
{v=KeyNum();
switch(v)
{case 1:w++;if(w>9)w=0;break; /* 1号键:让千位加一,如大于9则置0 */
case 2:x++;if(x>9)x=0;break;
case 3:y++;if(y>9)y=0;break;
case 4:z++;if(z>9)z=0;break;
case 5:w--;if(w<0)w=9;break; /* 5号键:让千位减一,如小于0则置9 */
case 6:x--;if(x<0)x=9;break;
case 7:y--;if(y<0)y=9;break;
case 8:z--;if(z<0)z=9;break;
case 9:u=w*1000+x*100+y*10+z;w=x=y=z=0;break; /* 9号键:将第一次已经输入的四位数储存,并将原各位清零 */
case 10:v=w*1000+x*100+y*10+z;w=x=y=z=0;break; /* 10号键:将第二次输入的四位数储存,并将原各位清零 */
case 11:u=0;v=0;w=0;x=0;y=0;z=0;break; /* 11号键:将所有数据清零

//功能:99秒时钟

#include<AT89X51.H> //包含头文件
#define uchar unsigned char //预定义关键词
#define uint unsigned int
#define ulong unsigned long
uchar tcount,secount; //定义全局变量

uchar code DISP[] //字形表
={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};
//0,1,2,3,4,5,6,7,8,9
uchar code LED[] //位码表
={0xfd,0xfb,0xf7,0xef,0xdf,0xbf};
//P2.6,P2.5,P2.4,P2.3,P2.2,P2.1
/*****************************************************************************/
void DELAY_1MS(uint i) //延时1毫秒子程序
{
uchar j; //定义局部变量j
while(i--) //每循环一次,变量减一,为零返回
{
for(j=0;j<123;j++); //循环123次
}
}
/*****************************************************************************/
void t0() interrupt 1 using 0//50毫秒定时器t0中断入口
{
tcount++; //定时器中断计数器加一
if(tcount==20) //计数20次