#define uchar unsigned char
#define uint unsigned int
uchar se=0,re=0;
uchar temp=0;
void wait(uint cnt)
{
while(--cnt);
}
//串口发送程序
void send(uchar se)
SBUF=se; //发送数据
while(TI == 0);
TI = 0;
//串口接收程序
uchar receive(void)
re=SBUF; //接收数据
while(RI==0);
RI=0;
return re;
//串口初始化
void sinti(void)
TH1 = 0xFD;
TR1 = 1;
EA = 1;
ES = 1;
void delay(int cnt)
//主程序
int main (void)
int i;
sinti(); //串口初始化程序
ring=1;
while(1)
while (1)
if(CASE1==0)
send('a');
ring=0;
break;
send('b');
send('c');
send('d');
if(ring==0)
for(i=0;i10000;i++);
//串口中断程序
if(RI) //判断是接收中断产生
RI=0; //标志位清零
temp=SBUF;
if(TI) //如果是发送标志位,清零
TI=0;
兄弟,下面是我自己写的,希望给你帮助,把数据用send_one_uart()这个函数直接发送到串口就行了!最后求采纳,哈哈!
//-----头文件
//-----定义全局变量
unsigned
char
temp;
/***************************************************
**
函数名称:
uart_init
功能描述:
串口初始化函数
输
入:无
出:
无
说
明:
****************************************************/
void
uart_init(void)
scon
=
//-----scon:
模式
uart,
使能接收
tmod
|=
//-----tmod:
timer
mode
重装
th1
0xfd;
//-----th1:
重装值
波特率
晶振
tr1
//-----tr1:
打开
es
//-----打开串口中断
ea
//-----打开总中断
sendbyte
发送字节函数
sendbyte(unsigned
dat)
sbuf
dat;
while(!ti);
ti
0;
sendstr
发送字符串函数
sendstr(unsigned
*s)
while(*s!='\0')
sendbyte(*s);
s++;
main
主函数
(void)
uart_init();
//-----串口初始化
if(temp=='h''i')
temp=0;
sendstr("hello");
uart_ser
串口中断服务子函数
interrupt
//-----串行中断服务程序
if(ri)
//-----判断是接收中断产生
ri=0;
//-----标志位清零
temp=sbuf;
//-----读入缓冲区的值
/*?甲机串口程序:甲机向乙机发送控制命令字符,甲机同时接收乙机发送的数字,并显示在数码管上.*/
sbit LED1=P1^0;
uchar Operation_No=0;? //操作代码
//数码管代码
//延时
void DelayMS(uint ms)
uchari;
//向串口发送字符
void Putc_to_SerialPort(uchar c)
SBUF=c;
while(TI==0);
void main()
P0=0x00;
PCON=0x00;?? //波特率不倍增
TH1=0xfd;
TL1=0xfd;
TI=RI=0;
TR1=1;
DelayMS(100);
while(K1==0);
switch(Operation_No)? //根据操作代码发送A/B/C或停止发送
case0:? Putc_to_SerialPort('X');
case1:? Putc_to_SerialPort('A');
//甲机串口接收中断函数
if(RI)
elseP0=0x00;
/*?乙机程序接收甲机发送字符并完成相应动作:乙机接收到甲机发送的信号后,根据相应信号控制LED完成不同闪烁动作.*/
uchar NumX=-1;
RI=TI=0;
NumX=++NumX;? //产生0~10范围内的数字,其中10表示关闭
SBUF=NumX;
if(RI)?? //如收到则LED则动作
switch(SBUF)//根据所收到的不同命令字符完成不同动作
编程原理
程序1为查询通信方式接口程序,为一典型的数据采集例程.其中bioscom()函数初始化COM1(此函数实际调用BIOS
INT
我写的串口通信代码比较长,给几个关键函数你吧,可实现PC与单片机的双工通信
#includecommon.h
void do_uart(void); //串口接收执字符时的操作
/*串口发送字符串 */
void sendstr(uchar *p)
while(*p!='\0')
{ SBUF=*p; //待发送的数据写入缓冲区
while(!TI); //等待发送完成
TI=0; //清零发送标志位
p++; //指针加1
cnt_s++; //发送计数
/*串口接收中断函数*/
if(RI) //查询接收标志位(有数据发送过来时置为1)
RI = 0; //接收标志位清零
// sendchar(SBUF);//让从电脑上传到单片机的数据,传回的电脑显示
do_uart();//对接受到得字符操作
/*串口初始化*/
void com_init(uint baud)
TL1=TH1;
ES = 1; //开串口中断
TR1 = 1; //允许定时器1工作
EA = 1; //开总中断
void sendchar(uchar uart_dat) //串口发送字符函数
SBUF = uart_dat; //待发送的数据写入缓冲区
while(!TI); //等待发送完成
TI = 0; //清零发送标志位
以上就是土嘎嘎小编为大家整理的linux显示命令找不到相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!