IAP15F2K61S2的串口通信
答案:1 悬赏:0 手机版
解决时间 2021-04-05 03:19
- 提问者网友:欺烟
- 2021-04-04 15:40
IAP15F2K61S2的串口通信
最佳答案
- 五星知识达人网友:零点过十分
- 2021-04-04 16:52
IAP的串口通信如果你用keil的debug模式必须用串口2去通信
串口2的通信是这样的 115200bps 33.1776MHz
void UartInit(void)
{
S2CON = 0x50;
AUXR = 0x14;
T2L = 0xB8;
T2H = 0xFF;
EA = 1;
IE2=0x01;
}
void SendChar(u8 dat)
{
BusyFlag=1;
S2BUF=dat;
while(BusyFlag);
}
void Uart2(void)interrupt 8
{
if(S2CON&S2RI)
{
S2CON&=~S2RI;
}
if(S2CON&S2TI)
{
S2CON&=~S2TI;
BusyFlag=0;
}
}
IAP的串口通信跟以前版本的串口通信差距很大,由于定时器1变成16位自动重装比以前版本定时器1的8位自动重装要好很多,所以方式也变化很多
void UartInit(void) //115200bps@33.1776MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xB8; //设定定时初值
TH1 = 0xFF; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
ES=1; //开启串口中断
EA=1; //开启总中断
}这是不使用debug模式的串口1通讯的初始化
串口2的通信是这样的 115200bps 33.1776MHz
void UartInit(void)
{
S2CON = 0x50;
AUXR = 0x14;
T2L = 0xB8;
T2H = 0xFF;
EA = 1;
IE2=0x01;
}
void SendChar(u8 dat)
{
BusyFlag=1;
S2BUF=dat;
while(BusyFlag);
}
void Uart2(void)interrupt 8
{
if(S2CON&S2RI)
{
S2CON&=~S2RI;
}
if(S2CON&S2TI)
{
S2CON&=~S2TI;
BusyFlag=0;
}
}
IAP的串口通信跟以前版本的串口通信差距很大,由于定时器1变成16位自动重装比以前版本定时器1的8位自动重装要好很多,所以方式也变化很多
void UartInit(void) //115200bps@33.1776MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xB8; //设定定时初值
TH1 = 0xFF; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
ES=1; //开启串口中断
EA=1; //开启总中断
}这是不使用debug模式的串口1通讯的初始化
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯