標(biāo)題:
請(qǐng)教STC8G1K08A單片機(jī)串口接收問(wèn)題
[打印本頁(yè)]
作者:
4147313
時(shí)間:
2022-1-11 16:11
標(biāo)題:
請(qǐng)教STC8G1K08A單片機(jī)串口接收問(wèn)題
請(qǐng)大俠指點(diǎn)下:
串口為什么發(fā)送正常,接收卻不正常呢?
4.png
(84.32 KB, 下載次數(shù): 59)
下載附件
2022-1-11 20:03 上傳
單片機(jī)源程序如下:
#include "STC8G.h"
#include "intrins.h"
void UartInit(void) //115200bps@33.1776MHz
{
SCON = 0x50; //8位數(shù)據(jù),可變波特率
AUXR |= 0x40; //定時(shí)器時(shí)鐘1T模式
AUXR &= 0xFE; //串口1選擇定時(shí)器1為波特率發(fā)生器
TMOD &= 0x0F; //設(shè)置定時(shí)器模式
TL1 = 0xB8; //設(shè)置定時(shí)初始值
TH1 = 0xFF; //設(shè)置定時(shí)初始值
ET1 = 0; //禁止定時(shí)器%d中斷
TR1 = 1; //定時(shí)器1開(kāi)始計(jì)時(shí)
}
void GPI_Init(void)
{
P3M0 = 0x00;
P3M1 = 0x00;
P31 = 0; //PWM關(guān)
}
/* 串口發(fā)送字節(jié)數(shù)據(jù)函數(shù) 參數(shù)是要發(fā)送的字節(jié) */
void UartSend_Data(unsigned char dat)
{
SBUF = dat; // 把要發(fā)送的數(shù)據(jù)給了SBUF寄存器
while(!TI); // 等待數(shù)據(jù)發(fā)送完成
TI = 0; // 清除發(fā)送完成標(biāo)志位
}
void main()
{
/* 定義一個(gè)8位變量 用于接收串口接收的字節(jié) */
unsigned char x =0;
GPI_Init();
UartInit(); // 串口初始化
while (1)
{
SBUF = 0x01; // 把要發(fā)送的數(shù)據(jù)給了SBUF寄存器
while(!TI); // 等待數(shù)據(jù)發(fā)送完成
TI = 0;
if (TI)
{
TI = 0; //清中斷標(biāo)志
P31 = !P31; //測(cè)試PWM端口
}
if (RI)// 如果串口接收到數(shù)據(jù)
{
RI = 0; //清中斷標(biāo)志
x =SBUF;
if (x == 0x01)
{
P31 = !P31; //翻轉(zhuǎn)MOS管狀態(tài)
UartSend_Data('l');
}
if (x == 0x02)
{
P32 = !P32; //翻轉(zhuǎn)led狀態(tài)
SBUF = 'm'; // 把要發(fā)送的數(shù)據(jù)給了SBUF寄存器
while(!TI); // 等待數(shù)據(jù)發(fā)送完成
TI = 0; // 清除發(fā)送完成標(biāo)志位
}
}
}
}
作者:
huashanhui20
時(shí)間:
2022-1-11 20:59
P31 = !P31; //測(cè)試PWM端口
作者:
huashanhui20
時(shí)間:
2022-1-11 21:01
不要操作P3.1,換個(gè)IO口,因?yàn)榇诳臻e狀態(tài)為高電平,遇到低電平就會(huì)開(kāi)始判斷起始位
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1