数码之家

 找回密码
 立即注册
搜索
查看: 1719|回复: 0

[C51] 不知道何原因,一直无法进入中断

[复制链接]
发表于 2020-7-13 23:00:40 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
不知道有没有玩HC89S105C8的坛友,在测试一个程序的时候,一直没有进入中断。因为用串口软件发送数据后始终没有数据返回。

  1. #define        ALLOCATE_EXTERN
  2. #include "HC89S105xx.h"                             

  3. unsigned char RevBuffer[10];
  4. unsigned char t[]="haha,live!";
  5. /////////////////////////////////////////////////////////////////////
  6. //系统初始化
  7. /////////////////////////////////////////////////////////////////////
  8. void InitializeSystem()
  9. {
  10.        
  11.   WDTCCR = 0x00;                                                      //关闭看门狗                                 //本例程为方便测试关闭看门狗,实际使用中,建议客户打开看门狗,详见WDT复位例程
  12.   CLKCON = 0x02;                  //打开内部高速RC
  13.         CLKDIV = 0x02;
  14.    
  15.         /**********************************相关配置初始化**************************************/       
  16.   P0M0 = P0M0&0xF0|0x02;                //P00设置为上拉输入
  17.   P0M0 = P0M0&0x0F|0x80;                //P01设置为推挽输出       
  18. /**********************************UART配置初始化**************************************/       
  19.   TXD_MAP = 0x01;                                                //TXD映射P01
  20.         RXD_MAP = 0x00;       
  21.        
  22.         SBRTL = 0x97;
  23.   SBRTH = 0xFF;  //9600波特率                      
  24.         SCON2 = 0x12;
  25.         S1REN = 1;
  26.         ES1 = 1;
  27.         EA=1;
  28. }


  29. ///////////////////////////////////////////////////////////////////////
  30. // 接收和发送中断
  31. ///////////////////////////////////////////////////////////////////////
  32. void isr_UART() interrupt UART1_VECTOR
  33. {
  34.        
  35.     unsigned char len, i;
  36.           unsigned int j=0;
  37.           EA = 0;       
  38.                 len = SBUF;
  39.                 S1RI=0;       
  40.           SBUF = 'y';
  41.           while(!S1TI);
  42.           S1TI=0;
  43.                 for(i=0;i<len;i++)
  44.                 {
  45.                         while(!S1RI);
  46.                         RevBuffer[i]=SBUF;
  47.                         S1RI=0;
  48.                 }
  49.                
  50.                 for(i=0;i<10;i++)
  51.                 {
  52.                         SBUF = t[i];
  53.                         while(!S1TI);
  54.                         S1TI=0;
  55.                 }
  56.                 EA = 1;
  57.                
  58. }


  59. void main()
  60. {   
  61.     InitializeSystem();
  62.     while(1);
  63. }
复制代码


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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-23 23:00 , Processed in 0.124801 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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