HC89S003F4开发板串口调试

使用资料自带的demo

主程序

/************************************系统初始化****************************************/
WDTCCR = 0x00; //关闭看门狗
//本例程为方便测试关闭看门狗,实际使用中,建议客户打开看门狗,详见WDT复位例程
CLKSWR = 0x51; //选择内部高频RC为系统时钟,内部高频RC 2分频,Fosc=16MHz
CLKDIV = 0x01; //Fosc 1分频得到Fcpu,Fcpu=16MHz
/**********************************UART配置初始化**************************************/
P2M0 = P2M0&0x0F|0x80; //P21设置为推挽输出
P0M1 = P0M1&0x0F|0x20; //P03设置为上拉输入
TXD_MAP = 0x21; //TXD映射P21
RXD_MAP = 0x03; //RXD映射P03
T4CON = 0x06; //T4工作模式:UART1波特率发生器
//波特率计算
//波特率 = 1/16 * (T4时钟源频率 / 定时器4预分频比) / (65536 - 0xFF98)
// = 1/16 * ((16000000 / 1) / 104)
// = 9615.38(误差0.16%) //波特率9600
//反推初值 = (65536 - ((T4时钟源频率 / 定时器4预分频比) * (1 / 16)) / 波特率)
// = (65536 - (16000000 * (1 / 16) / 9600))
// = (65536 - 104.167)
// = FF98 TH4 = 0xFF;
TL4 = 0x98; //波特率9600
SCON2 = 0x02; //8位UART,波特率可变
SCON = 0x10; //允许串行接收
IE |= 0X10; //使能串口中断
EA = 1; //使能总中断 while(1)
{
if(guc_Uartflag)
{
IE &=~ 0x10; //失能UART1中断
for(guc_i= 0;guc_i<guc_Uartcnt;guc_i++)
{
SBUF = guc_Uartbuf_a[guc_i]; //发送8位串口数据
while(!(SCON & 0x02));
SCON &=~ 0x02; //清除发送中断标志位
}
IE |= 0x10; //UART1中断使能
guc_Uartflag = 0;
guc_Uartcnt = 0;
SCON |= 0x10; //UART1接收使能
}
}

中断接收程序

void UART1_Rpt(void) interrupt UART1_VECTOR
{
if(SCON & 0x01) //判断接收中断标志位
{
guc_Uartbuf_a[guc_Uartcnt++] = SBUF;//转存8位串口接收数据
if(guc_Uartcnt >= 5)
{
SCON &=~ 0x10; //失能UART1接收
guc_Uartflag = 1;
}
SCON &=~ 0x01; //清除接收中断标志位
}
}

实际效果



连续打印

封装成函数

void PrintString(char* buf)
{
int sub = 0;
while(buf[sub] != 0)
{
SBUF = buf[sub]; //·¢ËÍ8λ´®¿ÚÊý¾Ý
while(!(SCON & 0x02));
SCON &=~ 0x02; //Çå³ý·¢ËÍÖжϱê־λ
sub++;
}
}

主程序while里改成

    char sendbuf[] = "串口发送\n";
PrintString(sendbuf);

实际输出

最新文章

  1. js生成二维码 中间有logo
  2. thinkphp的钩子的两种配置和两种调用方法
  3. Mac上远程桌面连接Windows Server 2012 R2
  4. ios开发中button控件的属性及常见问题
  5. webApp禁止用户保存图像
  6. Cmake设置环境变量
  7. Netty4.X 学习(一)
  8. WebForm 控件(二)
  9. 实现一个简单的Log框架
  10. (一)DOM 常用操作 —— “查找”节点
  11. Windows下python2.7安装64位mysqlclient
  12. 线程在Linux中的实现
  13. AngularJS封装webupload实现文件夹上传
  14. java json注解
  15. P3089 [USACO13NOV]POGO的牛Pogo-Cow
  16. 在树莓派2上安装 Windows 10
  17. 常用数据库2 sqlite及SQL注入
  18. android基础----&gt;Fragment的使用
  19. python沙盒逃逸
  20. 通过Excel生成批量SQL语句

热门文章

  1. Chapter One
  2. 第2课第1节_Java面向对象编程_类的引入_P【学习笔记】
  3. 数据库中的同义词synonym
  4. php foreach 无法改变数组的值的问题
  5. post请求头中常见content-type(非常重要)
  6. Socket: java Socket的isConnected()、和isClosed()判断是否在线的问题(转)
  7. 004 API约定
  8. leetcode 50. Pow(x, n) 、372. Super Pow
  9. Ionic Cordova 调用原生 Api 实现拍照上传 图片到服务器功能
  10. ISO/IEC 9899:2011 条款6.2——概念