本帖最后由 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
|