打印

单片机串口问题

[复制链接]
1578|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
baidudz|  楼主 | 2012-12-24 23:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了如下一段代码,烧到板子里面后,用串口模拟工作测试,无法输出值
#include<math.h></math.h>
#include<string.h></string.h>
#include <regxag49.h></regxag49.h>


void SerialSendByte(char dat);
void SerialSendStr(char *str);
void SerialInterrupt(void);
void SerialSendInt(int);
void Modem_Init(void);
void SendECG();
void Uart_init();

signed int ECG[]={0,0,0,0,2,4,6,8,9,11,13,12,11,9,7,5,3,2,0,0,0,0,
-7,-15,-2,21,44,66,70,55,24,-4,15,-20,-16,-7,-2,0,0,0,0,0,0,
1,1,1,2,3,4,4,5,5,5,4,3,3,2,1,0,0,0,0,0};

int m=0;

void Delay();

void Uart_init(void) //uart initialization
{
TMOD |= 0x20;          /* timer1, mode 2, 8 bit reload */
S0CON  = 0x50;          /* serial mode 1, 8 bit uart, enable receive  */
//PCON  = 0x80;          /* SMOD = 1, double baud */
TH1   = 0xFA;         /* baud = 9600, fosc = 11.0592MHZ */
TL1   = 0xFA;       
RI0   = 0;          /* clear receive flag */
TI0   = 0;         /* clear send flag */
TR1   = 1;          /* start timer1 */
IE0   = 1;         /* enable serial interrupt */
EA    = 1;         /* enable all interrupt */

}


void SerialSendByte(char dat)
{
S0BUF = dat;
while(TI0 == 0);
TI0 = 0;
}


void SerialSendStr(char *str)
{
while(*str != '\0')
{
SerialSendByte(*str);
str++;
}
}

void Modem_Init()
{
//MODEM INIT
SerialSendByte(0x0D);//0x0D -- ASCII code of 'enter'
Delay();
SerialSendStr("AT");
Delay();
SerialSendByte(0x0D);
Delay();
SerialSendByte(0x0A);
Delay();
SerialSendStr("AT+IPR=9600");//baud rate
Delay();
SerialSendByte(0x0D);
Delay();
SerialSendByte(0x0A);
Delay();
SerialSendStr("AT+CMGF=1");// text mode
Delay();
SerialSendByte(0x0D);
Delay();
SerialSendByte(0x0A);
Delay();
SerialSendStr("AT+CNMI=1,1");//Noticifacation
Delay();
SerialSendByte(0x0D);
Delay();
SerialSendByte(0x0A);
Delay();
SerialSendStr("AT+CMGS=+447546338662");//mobile number
Delay();
SerialSendByte(0x0D);
Delay();
SerialSendByte(0x0A);
Delay();
   Delay();
Delay();
}


void SerialSendInt(int number) //  Sendiniteger; int-&gt;ASCII
{
const char dec[]="0123456789";
unsigned long int div=10;
if( number &lt; 0) //if number is negative send '-' sign.
{
number=-number;
SerialSendByte('-');
}

while(div&gt;1&&div&gt;number)
div/=10;
do
{
SerialSendByte(dec[number/div]);
number%=div;
div/=10;
}
while(div);
}


void SendECG() //Send ECG DATA
{

for (m=0;m&lt;63;m++)
{
SerialSendInt(ECG[m]);
}
SerialSendByte(0x0D);
Delay();
SerialSendByte(0x0A);
Delay();

}

/*--------------------------*/
void Delay(void)//Delay
{
unsigned int d;
for(d=1;d&lt;65535;d++);
}


void main()
{  

Uart_init();
Modem_Init();
    SendECG();
while(1)
{
}
}

相关帖子

沙发
pkat| | 2012-12-24 23:25 | 只看该作者
代码好像不全,没有中断函数

使用特权

评论回复
板凳
秋天落叶| | 2012-12-24 23:40 | 只看该作者
代码实在是太长了

使用特权

评论回复
地板
hsbjb| | 2012-12-24 23:56 | 只看该作者
都已经停产了
不清楚为什么还在用这个芯片

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

239

主题

2284

帖子

0

粉丝