我发现
古道热肠发表于 2009-9-20 11:07 | 只看该作者 回复 引用 评分 报告 返回版面 TOP 得分:0
19楼: 经测试,2楼和3楼两位网友提出的方法完全可行,再次感谢!
贴上测试代码
/****************************************************************************/
/* */
/* SERIAL.C: Interrupt Controlled Serial Interface */
/* */
/****************************************************************************/
//采用中断接收串口数据
//发送数据到串口可使用<stdio.h>定义的函数
//有疑义可访问bbs.21ic.com进行讨论。
//测试:古道热肠
#include <reg52.h>
#include <stdio.h>
volatile unsigned char UartIsSending;
char putchar (char ucWriteData)
{
SBUF=ucWriteData;
UartIsSending=1;
while(UartIsSending);
return (ucWriteData);
}
volatile unsigned char UartIsSending;
void UartIsr(void) interrupt 4
{
if(TI) //发送中断
{
UartIsSending=0;
TI=0;
}
if(RI) //接收中断
{
RI=0;
}
}
/****************************************************************************/
/* serial_init: initialize serial interface */
/****************************************************************************/
serial_init ()
{
SCON = 0x50; /* mode 1: 8-bit UART, enable receiver */
TMOD |= 0x20; /* timer 1 mode 2: 8-Bit reload */
TH1 = 0xf3; /* reload value 2400 baud */
TR1 = 1; /* timer 1 run */
ES=1;
}
void Delay(void)
{
unsigned char ucDelayCount;
for(ucDelayCount=0; ucDelayCount<0xFF; ucDelayCount++)
{
;
}
}
void main(void)
{
serial_init();
EA = 1;
while(1)
{
putchar('8');
putchar('\n');
Delay();
printf("welcome to http://www.21ic.com/n");
}
}
在printf("welcome to http://www.21ic.com/n");里如果把函数里的字符串放在一个数组里就不行了!
|