No.105248 作者:yenongqing 邮件:yenongqing@163.com ID:76232 登陆:2次 文章数:3篇 最后登陆IP:125.76.157.10 最后登陆:2007/8/11 15:47:18 注册:2007/4/27 14:25:43 财富:116 发帖时间:2007/4/27 14:27:57 发贴者IP:222.90.17.64 标题:yenongqing:串口求助 摘要:No.105248串口求助 做串口通讯时 有个问题向大家请教: 写了一个接受中断函数 void getchar() interrupt 4 using 3 { u_char i=0 ; EA=0; if(RI==1) { temp=SBUF; RecCharString[i]=temp; i++;RI=0; } if(i==8) { P3_4=1; if( RecCharString[0]==0x5e) { if( RecCharString[1]==0xb0)//心跳 { if( RecCharString[2]==0x00) { if(RecCharString[3]==0x04) { if(RecCharString[4]==0x00) { if(RecCharString[5]==0x00) { if(RecCharString[6]==0x01) { if(RecCharString[7]==0x12) { Xintiao=1;i=0; } } } } } } } } } EA=1; } 结果整个程序单片机无法执行 去掉这个中断函数 其他的程序都可以执行 整个程序: #include <reg51.h> #define u_char unsigned char #define u_int unsigned int #define StringWidth 4 sbit P2_7=P2^7; sbit P2_6=P2^6; sbit P2_5=P2^5; sbit P2_4=P2^4; sbit P2_2=P2^2; sbit P2_1=P2^1; sbit P2_0=P2^0; sbit P3_6=P3^6; sbit P3_5=P3^5; sbit P3_4=P3^4; u_char temp; u_int ui; u_char data SendCharString[StringWidth]={0x5e,0x03,0x00,0x04}; u_char data yangan[17]={0x5e,0x11,0x00,0x11,0x99,0x99,0x99,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; u_char data fanyangan[17]={0x5e,0x12,0x00,0x11,0x99,0x99,0x99,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; u_char data hongwai[4]={0x5e,0x13,0x00,0x04}; u_char data fanhongwai[4]={0x5e,0x14,0x00,0x04}; u_char data DString[9]={0x5e,0x80,0x00,0x09,0x51,0x52,0x53,0x54,0x55}; u_char data RecCharString[8],CheckSum[StringWidth]; u_char data k,ro,d,f,flag=0,count=0,wanglo=0,Xintiao=0; u_char data kaiguan0=1,kaiguan1=1; u_char data fankaiguan0=1,fankaiguan1=1; u_char data xintiaozhi[11]={0x5e,0x10,0x00,0x0b,0x99,0x99,0x99,0x00,0x00,0x00,0x00}; void delay1ms(void) { u_char data i; for(i=0;i <=250;i++) {;;} } void delay10ms(void) { u_char data j; for(j=0;j <=10;j++) {delay1ms();} } void send_char(u_char ch) { EA=0; SBUF=ch; while(TI==0); TI=0; EA=1; } void send_string(u_char *str, u_char strlen) { u_int k; for(k=0;k <strlen;k++) send_char(*(str + k)) ; } void JSCheckSum(u_char *str, u_char strlen) { u_char i; u_int chushu=0,chushu1=0,chushu2=0,chushu3=0, sum=0; for(i=0;i <strlen;i++) sum=sum+str[i]; ......
>>返回讨论的主题
|