|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
附件里也有硬件连接图!!!
我用的附件文件夹(解压缩后得)内的单片机程序(ASM格式,用的keil软件编译,后用
烧录器直接烧进单片机内实验),原希望当单片机收到一个数0CH时。
可以每隔一秒发一个数(从0FFH到01H)给PC机。
出现的问题:收是收到了。
可当单片机发数时,
1:若加上延时1S后发(加上LCALL DELAY1S),则PC机收到的数从FF
到E0都是正确的。E0后是乱码,好象有点规律(每次总是那些数)。
2:若不加延时,则收到的就是乱码。(不过每次都是那么些数)
怀疑是程序问题,硬件我把能换的片子都换成新的,PC机收到的数还是一样。
口我也从COM1换到COM2试过,还是一样。
怀疑是程序问题,不过程序较短,本人看了N本书。看了N遍程序。竟没发现错误。
望哪位做过,或精通通讯的高手、路过的、给予指导、发表点看法给予点帮助。谢谢!
ORG 0000H
AJMP MAIN
ORG 001CH
MAIN:SETB P1.2 ;堆栈地址初始化设置
MOV TMOD,#20H ;定时器方式2,自动重装初值计数
MOV TL1,#0F4H ;查表得到,波特率?22?600bps
MOV TH1,#0F4H
SETB EA
SETB TR1
CLR ES
MOV SCON,#50H
JNB RI,$ ;等待RI=1,接收完毕
MOV A,SBUF ;将接收寄存器的数据读到累加器中
CLR RI ;发送完后清RI,为下次接受作准备
CJNE A,#0CH,RETURN ;和本机地址比较,不同则转移
AJMP THISCHIP ;转到该片的服务程序
RETURN:AJMP MAIN
THISCHIP:MOV R3,#0FFH
MOV A,#0FFH
SEND:
SETB EA
CLR P1.2
MOV SCON,#40H
SETB TR1
MOV SBUF,A
JNB TI,$
CLR TI
DEC A
LCALL DELAY1S
DJNZ R3,SEND
AJMP MAIN
;延时1s的服务程序
DELAY1S:MOV R7,#0FAH
LOOPA:MOV R6,#0FAH
LOOPB:NOP
NOP
NOP
NOP
NOP
NOP ;1s
DJNZ R6,LOOPB
DJNZ R7,LOOPA
RET
END
[ 本帖最后由 xuzongjin 于 2007-3-10 13:48 编辑 ] |
|