本帖最后由 逍遥派掌门 于 2018-1-16 17:50 编辑
看到STC8的片子资源不错,到淘宝搞了两片以及转接板(转成DIP40的),然后接到STC89的开发板上,
硬件电路没有问题,
ISP下载程序非常顺利。用的是
STC自家的ISP软件,还带串口助手的。
简单的写了个串口1的中断程序,没有想到接收那里居然没有反应,同样的代码在STC89里可是跑成功的,
折腾了好久,就是失败,到STC那里提出这个问题,结果好几天都没有答复。
怀疑是STC8的片子的BUG,请网友讨论。
程序:
- void UartInit(void) //115200bps@11.0592MHz
- {
- P3M0 = 0xFF; // 设置强挽推
- P3M1 = 0x00;
-
- SCON = 0x50;
- T2L = BRT;
- T2H = BRT >> 8;
- AUXR = 0x15;
-
- ES = 1;
- EA = 1;
- }
- void serial() interrupt 4
- {
- if (RI) // 这里一直进不去,P10没有动静
- {
- RI=0;
- P10 = ! P10;
- }
- if (TI) // 这里成功的,没有问题
- {
- .......
- }
- }
复制代码
主程序就是:
UartInit ; while(1){}; 不写出来了,
被ISP下载软件误导了,I/O设置成准双向的就可以了。 结帖
- void UartInit(void) //115200bps@11.0592MHz
- {
- #define select_time_1 // 使用定时器1
-
- P_SW1 = P_SW1 & 0x3F; // 串口1的脚为:P3.0,p3.1
- P3M0 = 0x00; // 设置为准双向
- P3M1 = 0x00;
-
- SCON = 0x50;
- #ifdef select_time_1 // 定时器1作为波特率发生器
- TMOD = 0x00;
- TL1 = BRT;
- TH1 = BRT >> 8;
- TR1 = 1;
- AUXR = 0x40;
- #else // 定时器2作为波特率发生器
- T2L = BRT;
- T2H = BRT >> 8;
- AUXR = 0x15;
- #endif
-
- ES = 1;
- EA = 1;
- }
复制代码P3M1 = 0x00;
问题在这里
我设成00也不行。
一周热门 更多>