本帖最后由 KobeLai 于 2019-1-22 17:01 编辑
MA82G5D16 之串口配置:
一:串口模式设置。
二:串口时钟源/波特率设置。
三:TX/RX的端口模式使用准双向。
#define uCHAR unsigned char
#define uINT unsigned int
#include "REG_MA82G5Dxx.H"
#include "SFR_Macro_MA82G5D16.H"
#include "delay.H"
#include "TYPE.H"
uCHAR flag_Tx0_Busy;
void INT_UART0(void) interrupt 4
{
if(RI0){
// RI0 = 0;
ClrRI0();
}else if(TI0)
{
// TI0 = 0;
ClrTI0();
if(flag_Tx0_Busy == 1)
flag_Tx0_Busy = 0;
}
}
void Initial_UART0(void)
{
//SMOD = 1
// PCON0=PCON0|0x80;
SetSMOD1();
//串口模式为1: 10位可变波特率,使能接收
S0CON=0x50;
//串口时钟来源为定时器1
// T2MOD1=T2MOD1&(~TL2IS); // 选择访问TCLK/RCLK
ClrTL2IS();
// TCLK_TL2IE=0;
ClrTCLKTL2IE();
// RCLK_TF2L=0;
ClrRCLKTF2L();
S0CFG=0x08;
//T0:1: 16位定时器 T1: 2: 8位自动重载定时器
TMOD = 0x21;
// AUXR2=AUXR2|T1X12; // T1为1T 模式
SetT1X12();
//串口波特率为9600@11.0592MHz 1T
TH1=0xB8;
//使能定时器1
// TR1=1;
SetTR1();
}
void UART0_Send_Byte(uCHAR dta)
{
S0BUF = dta;
flag_Tx0_Busy = 1;
while(flag_Tx0_Busy);
}
void main(void)
{
// CKCON0 |= AFS; //MCU Run 11.0592MHz,
SetAFS();
delay_ms(3);
Initial_UART0();
// ES0 = 1;
SetES0();
// EA = 1;
SetEA();
UART0_Send_Byte(0xAA);
while(1);
}
MA82G5D16支持笙泉的OCD ICE,可以在Keil 3,Keil 4,Keil 5环境下自由仿真。
下面网址可以下载仿真安装包:
http://www.megawin.com.tw/zh-cn/support/index/70/113
|