|
爱科技、爱创意、爱折腾、爱极致,我们都是技术控
您需要 登录 才可以下载或查看,没有账号?立即注册
x
不知道有没有玩HC89S105C8的坛友,在测试一个程序的时候,一直没有进入中断。因为用串口软件发送数据后始终没有数据返回。
- #define ALLOCATE_EXTERN
- #include "HC89S105xx.h"
- unsigned char RevBuffer[10];
- unsigned char t[]="haha,live!";
- /////////////////////////////////////////////////////////////////////
- //系统初始化
- /////////////////////////////////////////////////////////////////////
- void InitializeSystem()
- {
-
- WDTCCR = 0x00; //关闭看门狗 //本例程为方便测试关闭看门狗,实际使用中,建议客户打开看门狗,详见WDT复位例程
- CLKCON = 0x02; //打开内部高速RC
- CLKDIV = 0x02;
-
- /**********************************相关配置初始化**************************************/
- P0M0 = P0M0&0xF0|0x02; //P00设置为上拉输入
- P0M0 = P0M0&0x0F|0x80; //P01设置为推挽输出
- /**********************************UART配置初始化**************************************/
- TXD_MAP = 0x01; //TXD映射P01
- RXD_MAP = 0x00;
-
- SBRTL = 0x97;
- SBRTH = 0xFF; //9600波特率
- SCON2 = 0x12;
- S1REN = 1;
- ES1 = 1;
- EA=1;
- }
- ///////////////////////////////////////////////////////////////////////
- // 接收和发送中断
- ///////////////////////////////////////////////////////////////////////
- void isr_UART() interrupt UART1_VECTOR
- {
-
- unsigned char len, i;
- unsigned int j=0;
- EA = 0;
- len = SBUF;
- S1RI=0;
- SBUF = 'y';
- while(!S1TI);
- S1TI=0;
- for(i=0;i<len;i++)
- {
- while(!S1RI);
- RevBuffer[i]=SBUF;
- S1RI=0;
- }
-
- for(i=0;i<10;i++)
- {
- SBUF = t[i];
- while(!S1TI);
- S1TI=0;
- }
- EA = 1;
-
- }
- void main()
- {
- InitializeSystem();
- while(1);
- }
复制代码
|
|