恨水水水长东 恨水水水长东
关注数: 17 粉丝数: 76 发帖数: 2,635 关注贴吧数: 22
串口发送程序总是发不完全 #include <reg52.h> #include <stdio.h> #include <intrins.h> #include <stdlib.h> #include <string.h> #define uchar unsigned char #define uint unsigned int uint count; uint Tcount; uchar i = 0; char Buffer[10] = "0"; //所要发送的数据 /******************************************************************** * 名称 : Time0_Init() * 功能 : 定时器的初始化,11.0592MZ晶振,50ms * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Time0_Init() { TMOD = TMOD|0x01; IE = 0x82; TH0 = 0x4c; TL0 = 0x00; TR0 = 1; } /******************************************************************** * 名称 : Com_Init() * 功能 : 初始化串口程序,晶振11.0592, 波特率9600 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Com_Init(void) { TMOD = TMOD|0x20; PCON = 0x00; SCON = 0x50; TH1 = 0xFd; TL1 = 0xFd; TR1 = 1; } /******************************************************************** * 名称 : Time0_Int() * 功能 : 定时器中断,中断中实现 Count 加一 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Time0_Int() interrupt 1 { TH0 = 0x4c; TL0 = 0x00; Tcount++; } /******************************************************************** * 名称 : Outside_Init() * 功能 : 外部中断0 的初始化 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Outside_Init(void) { EX0 = 1; //开外部中断0 EX1 = 1; IT0 = 1; //负边沿触发 IT1 = 1; EA = 1; //开总中断 } /* void bf() interrupt 0//p3.2 { sprintf(Buffer, "%d", count); send(Buffer); send("---"); memset(Buffer, 0 ,sizeof(Buffer)); count = 0; } */ //p3.3 void yd() interrupt 2 { count++; } void send(char *p) { while(1) { SBUF = *p; while(!TI) //如果发送完毕,硬件会置位TI { _nop_(); } p++; if(*p == '\0') break;//在每个字符串的最后,会有一个'\0' TI = 0; //TI清零 } } int main() { Com_Init(); P2 = 0x00; Outside_Init(); Time0_Init(); while(1) { if(Tcount == 20) //当Count为 20 时,i 自加一次,20 * 50MS = 1S { P0 = ~P0; Tcount = 0; //sprintf(Buffer, "%d", count); //send(Buffer); send("123456789"); //memset(Buffer, 0 ,sizeof(Buffer)); count = 0; } } return 0; } 想发送123456789,但是总是少发1或者2这两个数,奇怪啊
1 下一页