2392|0

121

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

ADuC7061中断方式实现串口通讯 [复制链接]

/*******************************
* name:
* function:
* return:
********************************/
#include "string.h"
#include "global.h"
#include "function.h"
#include <stdio.h>
#include <aduc7061.h>
unsigned char UartDataRecevice;
unsigned char UartDataTransfer;
unsigned char ucTxBufferEmpty  = 0;
unsigned char ucRxBufferFull  = 0;
volatile unsigned char bSendResultToUART = 0;
void UartSendData(unsigned char uchar);
unsigned char UartReceviceData(void);
int main(void)
{
 /********
 使用到的变量
  *********/
 bSendResultToUART = 0;
 
 /********
 配置内部时钟10.24mhz
 *********/
 POWKEY1 = 0x1;
 POWCON0 = 0x78;
 POWKEY2 = 0xF4;
 
 /********
 配置GPIO管脚输出模式
 *********/
 GP2CON = 0x00;
 GP2DAT = BIT24;
 
 /********
 串口的初始化
  *********/
 GP1CON = BIT0 + BIT4;
 COMCON0 = BIT7;
 COMDIV0 = 0x21;
 COMDIV1 = 0x00;
 COMCON0 = BIT0 + BIT1 + BIT2;
 COMIEN0 = BIT0 + BIT1; //使能接收缓冲满中断和发送缓冲空中断
 
 /*使能串口中断*/
 IRQEN |= BIT11; 

 while (1)
 {
  if (bSendResultToUART == 1)
  {  
   printf("Received Charachter was : %x\r\n\n",UartDataRecevice); 
   bSendResultToUART = 0;
   //UartSendData(UartDataRecevice);   使用这程序卡死了,不知道为什么
  }
 }
}
/*****************************************
* IRQ_Handler
******************************************/
void IRQ_Handler(void) __irq
{
 unsigned long IRQSTATUS = 0;
 unsigned char ucCOMIID0 = 0;
 IRQSTATUS = IRQSTA;
 
 if ((IRQSTATUS&BIT11) == BIT11)   //UART中断源
 {
  ucCOMIID0 = COMIID0;      
  if ((ucCOMIID0&BIT2) == BIT2)  // 接收缓冲区满中断
  {   
   UartDataRecevice = COMRX; // 读数据
   bSendResultToUART = 1; //置位
  }
  if ((ucCOMIID0&BIT1) == BIT1)
  {
   ucTxBufferEmpty = 1;
  }
 }
}
void UartSendData(unsigned char ucTxChar)
{
 COMTX = ucTxChar;
 while ((COMSTA0&0x40) == 0x00) 
 {
 }
}
今天自己测试的中断方式串口通讯,欢迎正在使用ADuC706x或使用过的朋友一起交流学习!
点赞 关注
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表