//-----头文件
#include<reg52.h>
//-----定义全局变量
unsigned
char
temp
/***************************************************
**
函数名称:
uart_init
**
功能描述:
串口初始化函数
**
输
入:无
**
输
出:
无
**
说
明:
无
****************************************************/
void
uart_init(void)
{
scon
=
0x50
//-----scon:
模式
1,
8-bit
uart,
使能接收
tmod
|=
0x20
/肢弊/-----tmod:
timer
1,
mode
2,
8-bit
重装
th1
=
0xfd
//-----th1:
重装值
9600
波特率
晶振
11.0592mhz
tr1
=
1
//-----tr1:
timer
1
打开
es
=
1
//-----打开串口中断
ea
=
1
//-----打开总中断
}
/***************************************************
**
函数名称:
sendbyte
**
功能描述:
发送字节函数
**
输
入:无
**
输
出:
无
**
说
明:
无
****************************************************/
void
sendbyte(unsigned
char
dat)
{
sbuf
=
dat
while(!ti)
ti
=
0
}
/***************************************************
**
函数名称:
sendstr
**
功能描述:
发送字符串函数
**
输
入:无
**
输
出:
无
**
说
明:
无
****************************************************/
void
sendstr(unsigned
char
*s)
{
while(*s!='\0')
{
sendbyte(*s)
s++
}
}
/***************************************************
**
函数名称:
main
**
功能描述:
主函数
**
输
入:无
**
输
出:
无
**
说
明:
无
****************************************************/
void
main
(void)
{
uart_init()
//-----串历哗族口初始化
while(1)
{
if(temp=='h'&&'i')
{
temp=0
sendstr("hello")
}
}
}
/***************************************************
**
函数名称:
uart_ser
**
功能描述:
串口中断服务子函数
**
输
入:无
**
输
出:
无
**
说
明:
无
****************************************************/
void
uart_ser
(void)
interrupt
4
//-----串行中断服芦橘务程序
{
if(ri)
//-----判断是接收中断产生
{
ri=0
//-----标志位清零
temp=sbuf
//-----读入缓冲区的值
}
}
一般开发上位机软件都雹敏是带图形界面的。C也能做出图形界面的软件,但是开发周期太长也不实用。所以最好还是需要会一些其他语言,例如C++,C#,Java这些做图形界面开发周期短的语言。既然会C,那么学习其他语言也只是一个熟悉语法的过程。所以很快就能上手,因为语言都是相通的嘛。可以开阔埋伏自己的视野去学习一下新的语言。不源液枝是说只会C有什么弊端,只是想说会的多才会知道语言之间的优劣。 #include "reg52.h"#define uchar unsigned char
#define LLONG 30
//char code table[]="Hello!"
uchar code table[]={'F','i','r','s','t','C','h','a','r',':',0x0d,0x0a,'W','W','W','.','H','E','B','T','U','.','E','D','U','.'掘启,'C','N',0x0d,0x0a}
uchar Flag,FirstChar=0,UARTChar[10]={0}
void uart() interrupt 4
{
ES=0 判或如 //---- 中断暂停 ----
RI=0 //---- 清标志位 ----
FirstChar=SBUF
Flag=1
ES=1 //---- 中断开启 ----
}
void main()
{
char i=0
TH1=0xFD
TL1=0xFD
TMOD=0x20//T1在定时器方式
TCON=0x40//TR1=1
PCON=0x00//SMOD为0
SCON=0x50//串行方式1 REN=1
IP=0x00
IE=0x90
while(1)
{
if(Flag==1)
{
ES=0 //---- 中断暂停 ----
Flag=0 //---- 清标志位 ----
for(i=0i<10i++)
{
SBUF=table[i]
while(!TI)
TI=0
}
SBUF=FirstChar
while(!TI) //---- 通讯等待 ----
TI=0 //---- 清标志位 ----
for(i=10i<LLONGi++)
{
SBUF=table[i]
while(!TI)
TI=0
}
ES=1 团凳 //---- 中断开启 ----
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)