[其它应用] 79F166A串口异步通信

[复制链接]
6270|8
 楼主| llia 发表于 2021-8-8 20:50 | 显示全部楼层 |阅读模式
请问有谁用过79F166A串口异步通信,能否发一份源程序给小弟学习学习,谢谢!
juventus9554 发表于 2021-8-8 20:52 | 显示全部楼层
找个框架,基本够用了
 楼主| llia 发表于 2021-8-8 20:55 | 显示全部楼层
能详细说说吗
langgq 发表于 2021-8-8 20:59 | 显示全部楼层

unsigned int code uart_initval_list[]=
{
        1200,
        2400,
        4800,
        9600,
};


//-----------------------------------------------------------------------------
// T1初始化,串行口
//-----------------------------------------------------------------------------
void uart_init( void )
{
                SCON = 0x50;
                PCON = 0x00;
                RXCON = 0x00;                // 1V以下是低电平
               
                T2CON = 0x30;                // 定时器2产生接收和发送波特率,开启定时器,工作在定时器方式,自动重装载
                T2MOD = 0x00;
                baudrate = 3;
                RCAP2H =( 65536 - XTAL / uart_initval_list[baudrate]/ 32 )/ 256;
                RCAP2L =( 65536 - XTAL / uart_initval_list[baudrate]/ 32 )% 256;
                TR2 = 1;                        // 开启T1
                ES  = 1;                        // 开启UART中断
                UART_REC();
}
//-----------------------------------------------------------------------------
// 串行口中断
//-----------------------------------------------------------------------------
        void uart( void ) interrupt 4
        {
                unsigned char i;
               
                if( RI )
                {
                        RI = 0;
                }
                if(        TI )
                {
                        RI = 0;
                }
        }
 楼主| llia 发表于 2021-8-8 21:01 | 显示全部楼层
呃。。。看不是太懂
juventus9554 发表于 2021-8-8 21:04 | 显示全部楼层
XTAL是所使用的时钟源频率,单位HZ
wangpe 发表于 2021-8-8 21:06 | 显示全部楼层
对,根据你的电路写个宏定义即可。
renyaq 发表于 2021-8-8 21:10 | 显示全部楼层
你这个程序下面这部分有问题吧,因该清零TI不是吗?
if(        TI )
  {
        RI = 0;
   }
 楼主| llia 发表于 2021-8-8 21:12 | 显示全部楼层
好的,我明天去单位试一下,多谢各位大侠了哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

961

主题

8893

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部