[范例教程] 笙泉【8051 1T】MA82G5D16 UART

[复制链接]
101|0
 楼主 | 2019-1-22 16:53 | 显示全部楼层 |阅读模式
本帖最后由 KobeLai 于 2019-1-22 17:01 编辑

MA82G5D16 之串口配置:

一:串口模式设置。

二:串口时钟源/波特率设置。

三:TX/RX的端口模式使用准双向。




  1. #define                uCHAR        unsigned char
  2. #define                uINT        unsigned int

  3. #include "REG_MA82G5Dxx.H"
  4. #include "SFR_Macro_MA82G5D16.H"
  5. #include "delay.H"
  6. #include "TYPE.H"


  7. uCHAR flag_Tx0_Busy;



  8. void INT_UART0(void) interrupt 4
  9. {

  10.         if(RI0){
  11. //                RI0 = 0;
  12.                 ClrRI0();
  13.                
  14.         }else if(TI0)
  15.         {
  16. //                TI0 = 0;
  17.                 ClrTI0();

  18.                 if(flag_Tx0_Busy == 1)
  19.                         flag_Tx0_Busy = 0;
  20.         }
  21. }


  22. void Initial_UART0(void)
  23. {
  24.         //SMOD = 1
  25. //        PCON0=PCON0|0x80;
  26.                 SetSMOD1();
  27.         
  28.     //串口模式为1: 10位可变波特率,使能接收
  29.     S0CON=0x50;
  30.         
  31.     //串口时钟来源为定时器1
  32. //        T2MOD1=T2MOD1&(~TL2IS);                 // 选择访问TCLK/RCLK
  33.                 ClrTL2IS();
  34.         
  35. //        TCLK_TL2IE=0;
  36.                 ClrTCLKTL2IE();
  37.         
  38. //        RCLK_TF2L=0;
  39.                 ClrRCLKTF2L();
  40.         
  41.         S0CFG=0x08;
  42.     //T0:1: 16位定时器 T1: 2: 8位自动重载定时器
  43.     TMOD = 0x21;
  44. //        AUXR2=AUXR2|T1X12;                 // T1为1T 模式
  45.                 SetT1X12();
  46.                
  47.         //串口波特率为9600@11.0592MHz 1T
  48.         TH1=0xB8;                        
  49.         //使能定时器1
  50. //        TR1=1;
  51.                 SetTR1();
  52.                
  53. }

  54. void UART0_Send_Byte(uCHAR dta)
  55. {
  56.         S0BUF = dta;
  57.         flag_Tx0_Busy = 1;
  58.         while(flag_Tx0_Busy);
  59. }

  60. void main(void)
  61. {   
  62.         
  63. //        CKCON0 |= AFS;                                                //MCU Run 11.0592MHz,
  64.                 SetAFS();

  65.         delay_ms(3);
  66.         Initial_UART0();
  67. //        ES0 = 1;
  68.                 SetES0();
  69.         
  70. //        EA = 1;
  71.                 SetEA();
  72.         
  73.         UART0_Send_Byte(0xAA);
  74.         while(1);
  75. }
复制代码



MA82G5D16支持笙泉的OCD ICE,可以在Keil 3,Keil 4,Keil 5环境下自由仿真。
下面网址可以下载仿真安装包:
http://www.megawin.com.tw/zh-cn/support/index/70/113



复制代码
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

快速回复 返回顶部 返回列表