No.95892 作者:nankang 邮件:nankang99@126.com ID:57184 登陆:2次 文章数:2篇 最后登陆IP:221.196.56.80 最后登陆:2006/8/22 19:55:54 注册:2006/7/20 22:14:10 财富:108 发帖时间:2006/7/22 16:34:35 发贴者IP:221.238.226.70 标题:nankang:求教:用串口精灵给89C52发送数据,怎么只能发送一次呢 摘要:No.95892求教:用串口精灵给89C52发送数据,怎么只能发送一次呢 我通过串口精灵给AT89C52发数据 ,可是只是单片机上电后第一次发送成功,再发就不对了,不知道为什么啊。弄了快一周了,课题进度在那 着急啊拜托这里的高人给看看,程序有点长。多谢了!!一定帮我看看啊,我现在没有师兄,导师不在,急死了。程序可能看不清楚,我们再讨论。 #include <reg52.h> #include <math.h> #define T0 10 sbit P10=P2^0;//脉冲 sbit P11=P2^1; //方向 sbit P12=P2^2; //细分 sbit P13=P2^3;//等于0时脱机模式 sbit P15=P2^5;//动力 sbit P16=P2^6;//雪地模式 sbit P17=P2^7;//巡航模式 unsigned int code StepTim[2][10]={{300,200,100,100,100,100,100,100,100,100}, {500,500,300,300,300,300,300,300,300,300}}; unsigned int idata ComWord[7]; unsigned int data StepNum,realStep; char temp; unsigned char flag=0,speed,targetspeed; void InitialUart(void); //初始化波特率 void InitialUart(void) {EA=0; TR2=0; TMOD=0x11; //set timer0/1 operate in MODE1 (16-bit timer) T2CON=0x30; //enable timer2 as serial transmit and receive clock PCON=0; //SMOD=0 SCON=0x50; //|SM0|SM1|SM2|REN|TB8|TB9|TI|RI| RCAP2L=0xB8; RCAP2H=0xFF; //reload value----to set Baudrate=4800 TL2=0xB8; TH2=0xFF; TR2=1; EA=1; } void timer1(void) interrupt 3 using 3 {unsigned char Tim; static unsigned char i,j, Step=0; TR1=0; ET1=0; P10=~P10; if((speed-targetspeed)> 10) P11=0; else if((targetspeed-speed)> 10) P11=1; else P13=0; if(P13!=0) {Tim=3000; TL1=(65536-Tim)&0xff; TH1=(65536-Tim)/256; if(Step> realStep) { TR1=0; ET1=0; for(j=1;j <=30;j++) { for(i=1;i <=30;i++) { } } P13=0; } else {ET1=1; TR1=1; Step++;}}} void timer0(void) interrupt 1 using 1 { unsigned char i,j,Tim; static unsigned char k,Step; TR0=0;/*关计数器*/ ET0=0;/*停中断*/ P10=~P10; if(P15==0) {if(Step <StepNum) {Tim=StepTim[0][k]; if(Step%3==0) k++; } else if(Step> realStep-6&&Step <realStep-3) Tim=200; else Tim=300; } else if(P16==0) {Tim=StepTim[1][k]; if(Step%3==0) k++; } else Tim=300; TL0=(unsigned char)((65536-Tim)&0xff); TH0=(unsigned char)((65536-Tim)/256);/*再次附中断初值*/ if(Step> realStep) { P10=1; TR0=0; ET0=0; for(j=1;j <=30;j++) { for(i=1;i <=30;i++) { } } P13=0; } else { TR0=1; ET0=1; Step++; } } [color=#DC143C]void Com(void) interrupt 4 using 2 { static unsigned char idata Com[11]; static unsigned char idata co=1; unsigned char data i,j; if(RI) ......
>>返回讨论的主题
|