| 查看: 1192 | 回复: 3 | ||
[求助]
52单片机的程序问题,程序刚开始可以执行,可是执行一段时间后就不灵敏了!求高人指点 已有1人参与
|
|
#include <reg52.h> // 89C52单片机头文件 #include <stdio.h> #include <intrins.h> sbit key1=P1^0; sbit key2=P1^1; sfr ISP_CONTR=0xe7; idata unsigned char dis5_temp_buf[50]; unsigned int num4=0,temp=0,num5=0; unsigned char temp_buf_f=0; unsigned int flag=0,flag1=0,flag2=0,flag3=0,flag4=0; double num2=0,num3=0; unsigned int num=0,num1=0; unsigned char dis0_temp_buf[7]={"<!@CSB"}; unsigned char dis4_temp_buf[6]={"<!>JI"}; unsigned char dis6_temp_buf[2]={'#'}; unsigned char dis7_temp_buf[11]={"<!>KF报警#"}; unsigned char dis10_temp_buf[10]={"<!AKF1140"}; idata unsigned char dis11_temp_buf[9]={"<!>KG常#"}; idata unsigned char dis12_temp_buf[11]={"<!>LF故障#"}; idata unsigned char dis13_temp_buf[10]={"<!ALF1140"}; idata unsigned char dis14_temp_buf[9]={"<!>LG常#"}; idata unsigned char dis15_temp_buf[8]={"<!>KK1#"}; idata unsigned char dis16_temp_buf[8]={"<!>KK0#"}; idata unsigned char dis17_temp_buf[5]={"<!LL"}; idata unsigned char dis18_temp_buf[5]={"<!LH"}; void delayms(unsigned int xms) //延时程序 { unsigned int m,n; for(m=xms;m>0;m--) for(n=110;n>0;n--); } void T_init (void) //T0用于计数,T2用于定时 { TMOD=0x25; //设置T1定时器和T0计数器的工作方式 TH0=0; //设置T0计数器初值 TL0=0; TR0=1; // 启动定时器T0 TH1=0xfd; //串口初始化设置 TL1=0xfd; TR1=1; SM0=0; SM1=1; REN=0; ES=1; RCAP2H=(65536-45872)/256; //T2定时器的初始化设置 RCAP2L=(65536-45872)%256; TH2=RCAP2H; TL2=RCAP2L; T2CON=0x04; ET2=1; } /*void uart0_rx_isr() interrupt 4 //串口中断 { RI=0; temp_buf[temp_buf_f++]=SBUF; if (temp_buf_f>=17) { temp_buf_f=0; } } */ void USART_Transmit( unsigned char date ) // 发送数据 { ES=0; SBUF=date; while(!TI); TI=0; ES=1; } void send_data(unsigned char *buffer, unsigned char len) { unsigned char i=0; for(i=0;i<len;i++) //数据长度为包长度 { USART_Transmit(*buffer++); } } void shipin_init (void) //视频初始化设置 { send_data(dis0_temp_buf,sizeof(dis0_temp_buf)); delayms(10); } void main(void) //主函数 { shipin_init(); EA=1; T_init(); // WDT_CONTR=0x34; P1=0xff; //key2=1; while(1) { if(flag==1) { flag=0; delayms(2); if(key1!=0) { flag1=1; delayms(20); send_data(dis10_temp_buf,sizeof(dis10_temp_buf)); delayms(10); send_data(dis11_temp_buf,sizeof(dis11_temp_buf)); delayms(10); } if(key1==0) { delayms(10); if (key1==0) { flag1=0; flag2=1; flag3=0; num4=0; delayms(10); send_data(dis7_temp_buf,sizeof(dis7_temp_buf)); delayms(10); send_data(dis15_temp_buf,sizeof(dis15_temp_buf)); delayms(10); send_data(dis18_temp_buf,sizeof(dis18_temp_buf)); delayms(10); } } temp=flag2+flag1; flag1=0; if (temp==2) { temp=0; flag3=1; if(num4>=200) { //delayms(1); send_data(dis16_temp_buf,sizeof(dis16_temp_buf)); delayms(10); send_data(dis17_temp_buf,sizeof(dis17_temp_buf)); delayms(10); num4=0; flag3=0; flag2=0; } } if(key2!=0) { delayms(10); //send_data(dis13_temp_buf,sizeof(dis13_temp_buf)); delayms(10); send_data(dis14_temp_buf,sizeof(dis14_temp_buf)); delayms(10); } if (key2==0) { delayms(2); if (key2==0) { send_data(dis12_temp_buf,sizeof(dis12_temp_buf)); } } sprintf(dis5_temp_buf,"%.1f",num3) ; //速度值保留一位小数 delayms(10); send_data(dis4_temp_buf,sizeof(dis4_temp_buf)); send_data(dis5_temp_buf,sizeof(dis5_temp_buf)); send_data(dis6_temp_buf,sizeof(dis6_temp_buf)); delayms(10); if(flag4==1) { flag4=0; ISP_CONTR=0x20; } delayms(100); } } } void T2_() interrupt 5 //定时器T2中断 { TF2=0; num1++; num5++; if(num1==10) //定时1秒 { num1=0; flag=1; num=256*TH0+TL0; TH0=0; TL0=0; num2=(double)num/27.69; num3=num2; } if(flag3==1) { num4++; } if(num5>=6000) { num5=0; flag4=1; } } 程序就是采集一个脉冲变量,还有两个开关量,为什么那key1开关量,在程序运行一段时间后,给1或者给0都没有变化,但是key2开关量一直都是正常的,跪求高人指点啊 。如果可以,有酬谢。 |
» 猜你喜欢
假如你的研究生提出不合理要求
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有27人回复
所感
已经有3人回复
要不要辞职读博?
已经有7人回复
不自信的我
已经有11人回复
北核录用
已经有3人回复
实验室接单子
已经有3人回复
磺酰氟产物,毕不了业了!
已经有8人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有10人回复
26申博(荧光探针方向,有机合成)
已经有4人回复
» 本主题相关价值贴推荐,对您同样有帮助:
如何利用shell同时执行2个互不干扰的命令呢???
已经有21人回复
单片机设计的秒表计时器不能正常显示是什么情况,求助,在线等
已经有4人回复
设计一段程序——将80C51单片机的任意一段汇编程序翻译成机器码(最好用C编程)
已经有8人回复
AVR单片机定时器使用问题
已经有4人回复
这个switch程序不能执行,求助:declaration syntax error
已经有3人回复
【求助】求助新华龙单片机程序问题
已经有4人回复
【求助】安装问题,安装后程序无法执行
已经有12人回复
2楼2014-03-04 17:27:02
3楼2014-03-06 09:06:56
4楼2014-03-07 11:00:28












回复此楼