12444|14

5310

帖子

453

TA的资源

五彩晶圆(高级)

楼主
 

ADUC7060 之UART [复制链接]

/******************************************************************************
COMTX   //UART 发送寄存器。
COMRX   //UART 接收寄存器。
COMDIV0 //UART 标准波特率发生器除数0。
COMIEN0 //UART 中断使能寄存器0。
COMDIV1 //UART 标准波特率发生器除数1。
COMIID0 //UART 中断标识0。
COMCON0 //UART 控制寄存器0。
COMCON1 //UART 控制寄存器1。
COMSTA0 //UART 状态寄存器0。
COMSTA1 //UART 状态寄存器1。
COMDIV2 //UART 小数分频器寄存器。
******************************************************************************/

void Init_UART(void)

        COMCON0 = DLAB(1);   // Enable access to COMDIV registers
 COMDIV0 = 0x21;   //UART 标准波特率发生器除数0 Set baud rate to 9600.
 COMDIV1 = 0x00;                 //UART 标准波特率发生器除数1
 //COMDIV2 = 0x21 + BIT11; //UART 小数分频器寄存器 Enable fractional divider for more accurate baud rate setting
 COMCON0 = Stop(1)   |//停止位。用户置1 后,如果字长为5 位则传送1.5 个停止位;如果字长为6、7 或8 位,则传送2 个停止位。不论所选停止位的个数是多少,接收器只检查第一个停止位。用户清0,则在发送的数据中只产生一个停止位。
                  WLS(D8)   ; //字长选择。
 COMIEN0 = ETBEI(1)  |
                  ERBFI(1)  ;  //UART 中断使能寄存器0 Enable UART interrupts when Rx full and Tx buffer empty.
 
 IRQEN |= BIT11; // Enable UART interrupt source
 

}

最新回复

GP1CON |= BIT0 + BIT4;    // 硬件接口选择P1.0和P1.1 COMCON0 = BIT7;         COMDIV0 = 0x2;       COMDIV1 = 0x00; COMDIV2=0x31c+BIT11+BIT15 COMCON0 = BIT0 + BIT1 + BIT2; COMIEN0=BIT0+BIT1; IRQEN=BIT11;  详情 回复 发表于 2016-10-12 10:50
点赞 关注
 
 

回复
举报

5310

帖子

453

TA的资源

五彩晶圆(高级)

沙发
 
宏定义

/******************************************************************************
            UART
******************************************************************************/
//COMCON0 寄存器
#define DLAB(x) x<<7 //分频锁存器访问。用户置1,可允许访问寄存器COMDIV0 和COMDIV1。用户清0,禁止访问寄存器COMDIV0 和COMDIV1 但允许访问COMRX、COMTX 和COMIEN0。
#define BRK(x)  x<<6 //设置断开用户置1,可强制发送为0。用户清0,采用正常模式工作。
#define SP(x)   x<<5 //强制奇偶校验。用户置1,强制奇偶校验为定义值。如果EPS=1 且PEN=1,则置1。如果EPS=0 且PEN=1,则清0。
#define EPS(x)  x<<4 //偶校验选择位。置1,以选择偶校验。清0,以选择奇校验。
#define PEN(x)  x<<3 //奇偶校验使能位。用户置1,以发送并检查奇偶校验位。用户清0,则既不发送也不检查奇偶校验。
#define Stop(x) x<<2 //停止位。用户置1 后,如果字长为5 位则传送1.5 个停止位;如果字长为6、7 或8 位,则传送2 个停止位。不论所选停止位的个数是多少,接收器只检查第一个停止位。用户清0,则在发送的数据中只产生一个停止位。
#define WLS(x)  x<<0 //字长选择。
#define D5  0//5 位。
#define D6  1//6 位。
#define D7  2//7 位。
#define D8  3//8 位。
//COMIEN0 寄存器
#define EDSSI(x)    x<<3 // 调制解调器状态中断使能位。用户置1 后,当COMSTA0[3:1]的任一位被置1 时,允许产生中断。由用户清0。
#define ELSI(x)     x<<2 // 接收状态中断使能位。用户置1 后,当COMSTA0[3:1]寄存器任一位被置1 时,使能中断产生。由用户清0。
#define ETBEI(x)    x<<1 // 使能发送缓冲空中断。用户置1 后,在发送期间,如果缓冲器为空(即COMSTA0[5]置1),则使能中断。由用户清0。
#define ERBFI(x)    x<<0 // 使能接收缓冲满中断。用户置1 后,在接收期间,当缓冲器满时,使能中断。由用户清0。

点评

楼主用的这些宏定义不错哈。  详情 回复 发表于 2012-10-31 01:56
 
 
 

回复

5310

帖子

453

TA的资源

五彩晶圆(高级)

板凳
 
收发
/******************************************************************************

******************************************************************************/
void UART_Send(unsigned char ucTxChar)
{
    COMTX = ucTxChar;
    while ((COMSTA0 & 0x40) == 0x00){}          // Wait for Tx buffer empty bit to be set                    
}
/******************************************************************************

******************************************************************************/
unsigned char UART_Received(void)
{
    unsigned char ucRxChar;
    if ((COMSTA0 & 0x01) == 0x01)          // If the Rx buffer full bit is set
    {       
        ucRxChar = COMRX;                          // read COMRX register
        UART_Send(ucRxChar);
    }
    return ucRxChar;
}
 
 
 

回复

121

帖子

0

TA的资源

纯净的硅(初级)

4
 
目前正使用ADuC7061的芯片···学习了!谢谢楼主
 
 
 

回复

121

帖子

0

TA的资源

纯净的硅(初级)

5
 
void IRQ_Handler(void) __irq
{
unsigned long IRQSTATUS = 0;
unsigned char ucCOMIID0 = 0;
IRQSTATUS = IRQSTA;
       
if ((IRQSTATUS&BIT11) == BIT11)   //uart中断源
{
        ucCOMIID0 = COMIID0;
        if ((ucCOMIID0&0x04) == 0x04)  //接收缓冲区满
        {
                 UartDataRecevice = COMRX;  //读串口接收到的数据
        }
        else if ((ucCOMIID0&0x02) == 0x02) //发送缓冲区
        {       
                             //
        }
        IRQCLR = BIT11;
           }
}

楼主,刚参考了你的UART函数,那么在中断处理函数中需要做些什么处理呢?我的中断没弄成功?

点评

//uart中断源 可以进入这里吗?  详情 回复 发表于 2012-10-25 16:46
 
 
 

回复

5310

帖子

453

TA的资源

五彩晶圆(高级)

6
 

回复 5楼 zhoouauruheng 的帖子

//uart中断源  可以进入这里吗?

点评

我用keil调试了,好像进不了。。。。楼主可以给我发一份串口中断使用的例程不!谢谢 303813725@qq.com  详情 回复 发表于 2012-10-26 09:01
 
 
 

回复

121

帖子

0

TA的资源

纯净的硅(初级)

7
 

回复 6楼 蓝雨夜 的帖子

我用keil调试了,好像进不了。。。。楼主可以给我发一份串口中断使用的例程不!谢谢   303813725@qq.com

点评

学习的精神可嘉,加油!  详情 回复 发表于 2012-10-26 10:47
 
 
 

回复

768

帖子

711

TA的资源

纯净的硅(高级)

8
 

回复 7楼 zhoouauruheng 的帖子

学习的精神可嘉,加油!

点评

问题一直未得到解决!·····  详情 回复 发表于 2012-10-26 11:32
 
 
 

回复

121

帖子

0

TA的资源

纯净的硅(初级)

9
 

回复 8楼 苏莎莎 的帖子

问题一直未得到解决!·····

点评

继续关注吧!看有哪个高手给你解答:)  详情 回复 发表于 2012-10-26 14:55
 
 
 

回复

768

帖子

711

TA的资源

纯净的硅(高级)

10
 

回复 9楼 zhoouauruheng 的帖子

继续关注吧!看有哪个高手给你解答
 
 
 

回复

1560

帖子

24

TA的资源

五彩晶圆(初级)

11
 
速度这么快啊。学习下,呵呵。
 
 
 

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

12
 

回复 沙发 蓝雨夜 的帖子

楼主用的这些宏定义不错哈。
 
 
 

回复

6105

帖子

4

TA的资源

版主

13
 
都有人用上了没?
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

14
 
楼主大大~~~,我修改UART的波特率为115200,结果数据接收错误,求解答。
GP1CON |= BIT0 + BIT4;    // 硬件接口选择P1.0和P1.1
COMCON0 = BIT7;        
COMDIV0 = 0x3;      
COMDIV1 = 0x00;
COMCON0 = BIT0 + BIT1 + BIT2;
IRQ=BIT11;

点评

GP1CON |= BIT0 + BIT4; // 硬件接口选择P1.0和P1.1 COMCON0 = BIT7; COMDIV0 = 0x2; COMDIV1 = 0x00; COMDIV2=0x31c+BIT11+BIT15 COMCON0 = BIT0 + BIT1 + BIT2; COMIEN0=BIT0+BIT1; IRQEN  详情 回复 发表于 2016-10-12 10:50
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

15
 
zxc940107 发表于 2016-9-27 10:12
楼主大大~~~,我修改UART的波特率为115200,结果数据接收错误,求解答。
GP1CON |= BIT0 + BIT4; ...

GP1CON |= BIT0 + BIT4;    // 硬件接口选择P1.0和P1.1
COMCON0 = BIT7;        
COMDIV0 = 0x2;      
COMDIV1 = 0x00;
COMDIV2=0x31c+BIT11+BIT15
COMCON0 = BIT0 + BIT1 + BIT2;
COMIEN0=BIT0+BIT1;
IRQEN=BIT11;
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表