总中断EA=1?
ES(IE.4),串行口中断允许位;
EA (IE.7), CPU中断允许(总允许)位
时间比较长了,有些生疏。
ES(IE.4),串行口中断允许位;
EA (IE.7), CPU中断允许(总允许)位
时间比较长了,有些生疏。
引用 捂脸。:哦,知道了,要开中断使能,波特率才会出来。由于我只要发送,所以把发送程序和中断使能删了。
#include<reg52.h>
unsigned char flag,a;
void main()
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;
...
引用 捂脸。:EA=1;
#include<reg52.h>
unsigned char flag,a;
void main()
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;
...
引用 捂脸。:我试过,把Delay1ms(300);删了,但是用串口助手接收到的是乱码,应该是循环太快了导致串口助手把杂波当数据了。
今天用硬件测试了一下,好像是你主函数循环那的延时过高,改到250以下可以(值越大字符串打印的速度越慢)。具体原因不太清楚。至于前面说的ES=1和EA=1这两句最好不要加,加了输出出错。抱歉了,貌似前面误导你了,,(忙着期末考试,原谅不能给出...
引用 pldtv:谢谢,不懂汇编啊
MOV TMOD,#00100000B
MOV TH1,#230
MOV TL1,#230
SETB TR1
; ========================...
引用 changle:搞定了,不知道怎么回事,要用4800波特率才能传,9600不行
我的贴子不是有个串口通信?
引用 ssungirl:测一测晶振频率是不是11点几,电脑单片机同样传输设置,
搞定了,不知道怎么回事,要用4800波特率才能传,9600不行
引用 changle:11.0592
测一测晶振频率是不是11点几,电脑单片机同样传输设置,
引用 ssungirl:写个循环延时,定时器延时,用秒表对时。或者循环输出P.xx口,测频率。计算看看是不是运行在11M晶振。如果单片机周期确实是约1us,说明是设置问题,或者传输线路有电感电容,经不起高频
11.0592
引用 ssungirl:仔细看了一下代码,是串口初始化错了。51he点com网站抄的吧!真害人,学习时曾经也调试过这串一模一样的代码,变量名,顺序,注释等全部相同
11.0592
引用 changle:SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
仔细看了一下代码,是串口初始化错了。51he点com网站抄的吧!真害人,学习时曾经也调试过这串一模一样的代码,变量名,顺序,注释等全部相同
引用 changle:你这个TMOD |= 0x20;是不等于么,貌似不用打开EA和ES吧,我传送成功的4800波特率就没打开这2个啊
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装
...
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |
200字以内,仅用于支线交流,主线讨论请采用回复功能。