编写串口通讯程序步骤为:
1、设置波特率
2、设置串口工作方式
3、收发数据。
比如:
main(){
unsigned char dat
TMOD=0x20
TH1=0xfd
TL1=0xfd
TR1=1
SCON=0x50
while(1)
{
while(RI==0)
RI=0
dat=SBUF
SBUF=~dat
while(TI==0)
TI=0
}
}
我用的新唐芯片,8051内核,跟51差不多,望采纳void UART_Initial (void)
{
P02_Quasi_Mode //Setting UART pin as Quasi mode for transmit
P16_Quasi_Mode //Setting UART pin as Quasi mode for transmit
SCON_1 = 0x50 //UART1 Mode1,REN_1=1,TI_1=1
T3CON = 0x08 //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1
clr_BRCK
RH3= HIBYTE(65536 - (1000000/u32Baudrate)-1) /*16 MHz */
RL3= LOBYTE(65536 - (1000000/u32Baudrate)-1) /*16 MHz */
set_TR3//Trigger Timer3
}
以上是初始化的
void Send_Data_To_UART1(UINT8 c)
{
TI_1 = 0
SBUF_1 = c
while(TI_1==0)
}
这个是发送
void UART_isr (void) interrupt 4 //串行中断服务程序
{
if (RI_1==1)
{ /* if reception occur */
clr_RI_1/* clear reception flag for next reception */
Receive_Date[c] = SBUF_1
if (Receive_Date[0] == First_Date)
{
c++
}
else if(Receive_Date_Size >0 &&Receive_Date_Size <4)
{
c++
}
else if(Receive_Date[c] == Last_Date &&Receive_Date_Size ==4)
{
c = 0
Flag_Receive_One = 1
}
else
{
c = 0
}
}
}
接收
根据你的要求,写了几个简单的子函数。#include
#define
N
6
//方便修改密码的长度
sbit
key=P1^0
//确定发送密码,发送完后将密码清0
unsigned
char
i,a[N]
//定义数组来存放密码
void
serial_init()//串口初始化
{
TMOD=0x20//设置定时器1为工作方式2
TH1=0xfd
//波特率为9600,标准波特率
TL1=0xfd
TR1=1
//启动定时器1
PCON&=0x7f
//SMOD=0,这里不需要倍频
SCON=0x40
//设置串口为工作方式1
}
void
serial_send()
//串口发送函数
{
for(i=0i
评论
0
0
0
加载更多
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)