請問 為什么我用示波器測串口2的發送端沒有波形就是高電平 搞了好久都沒找出原因 感覺代碼也沒啥問題 請各位幫我看看 謝謝大家
以下是代碼:
#include "stc8A8K.h"
#define LED_ADDR 0x80C0
#define FOSC 24000000
#define BAUD 9600
#define BRT (65536-(FOSC/4/BAUD))
unsigned char flag;
unsigned char ReData;
unsigned char SenData;
code temp[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void Uart_Check()
{
S2BUF=0x55;
while(S2CON&S2TI==0);
*((unsigned char xdata *)LED_ADDR)=0x01; S2CON&=~S2TI;
}
void main()
{
S2CON=0x50; T2L=BRT;
T2H=BRT>>8;
EA=1;
AUXR=0X14;
IE2=0X01; while(1)
{ Uart_Check(); delay(500);
}
}
void Uart2() interrupt 8 using 1
{ if(S2CON&S2RI) { ReData=https://bbs.csdn.net/topics/S2BUF; *((unsigned char xdata *)LED_ADDR)=0x00;
// flag=1; S2CON&=~S2RI; }
uj5u.com熱心網友回復:
delay(500)呢,代碼在哪?uj5u.com熱心網友回復:
void delay(unsigned int m){
int a=0,b=0;
for(a=0;a<500;a++)
for(b=0;b<m;b++);
}
uj5u.com熱心網友回復:
我看芯片手冊他說串口的txd需配置成推挽輸出 但我配置了也沒用P4M0=0x04;
P4M1=0x00;
uj5u.com熱心網友回復:
程式可能死在函式Uart_Check()的這個while(S2CON&S2TI==0)里了。
S2TI是位暫存器,如果串口2沒有接收到資料,S2RI不置1,那么S2CON&S2TI恒為0。
uj5u.com熱心網友回復:
我看芯片手冊他說串口的txd需配置成推挽輸出 但我配置了也沒用 delay(500)呢,代碼在哪?
P4M0=0x04;
P4M1=0x00;
程式可能死在函式Uart_Check()的這個while(S2CON&S2TI==0)里了。
S2TI是位暫存器,如果串口2沒有接收到資料,S2RI不置1,那么S2CON&S2TI恒為0。
uj5u.com熱心網友回復:
應該是沒有配置串口時鐘uj5u.com熱心網友回復:
應該是沒有配置串口時鐘
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/71036.html
標籤:單片機/工控
