中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

单片机论坛

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 单片机论坛 → 浏览主题: 一段并口模拟串口的汇编请教
发表新帖 回复该主题
回帖:5个,阅读:939 [上一页] [1] [下一页]
* 帖子主题:

一段并口模拟串口的汇编请教

分享到
1000
sunsoncheng
文章数:109
年度积分:50
历史总积分:1000
注册时间:2010/5/25
发站内信
发表于:2010/12/26 11:52:53
#0楼
下面这个程序利用单片机的P1.3口模拟成串口发送数据,
硬件连接如附件
本来程序发送的是A0,但PC机上的接收所有均为00H,其它的数也是如此
PC机的串口测试软件的波特率调节与发送的均调为4800

   newto equ P1.3;用于模拟串口的IO口
       ;同时在p0.0中闪灯
ORG    0000H
LJMP   main
main:  ;定时器的初始化工作
MOV TMOD,#21H ;定时器0的启动与工作方式2的设定
MOV TH0, #0FfH ;定时器0高8位初值
MOV TL0, #2FH ;定时器0的低8位初值;4800BPS
       mov sp,  #60H   ;堆栈位置
t2:
mov r7,#0A0H ;发送A0到模拟口
lcall sendp

t1: ;延时间隔, 暂停及关灯时间
       mov r3,#10H
       mov r4,#0ffH
       mov r5,#0ffH
d1:     setb newto     ;关灯
djnz r5,d1
       djnz r4,d1
       djnz r3,d1

jmp t2      ;间断时间后重新发送 以便观看测试数据
    ret
;;============================================================
;;将R7的数据以P0.0口发送出去!波特率未调为2400
;;============================================================
sendp: ;发送字节
       MOV    R6, #08H ;0000 1000
       SETB   TR0 ;开定时器0
clr newto ;清空P1.5口,这时准备工作?发送的前准备?是高还是低?
       clr p0.0
       LCALL  delaybps ;查是否计时到等到一个新的开始
clr c ;发送前先清空一次
sendbit:
       MOV    A, R7 ;这时的R7是什么值?是要发送的字,数据
       RRC    A ;循环右移,这时的状态是将A(只能是A)向右移一位,且被移出的一位去到了CY处
;所以后面要发送的就是C就行了!
MOV    R7, A ;将新的数放回R7以备下次发送
mov newto,C ;将进位标志的值发送到相关口
       mov p0.0 ,c
       LCALL  delaybps ;等一下个周期到

       CLR    C
djnz r6,sendbit ;减一,不为0则转移
exitsend:
setb newto ;发送完成标志
       setb p0.0
       LCALL  delaybps ;等下一个周期
       CLR    TR0 ;关闭定时器0
       RET

delaybps: ;一直等到计时到了再做工作
       JNB    TF0, delaybps ;查计时器0的溢出标志,为0则转移,且不影响标志位
;此时为标志有溢出,即时间到,重新计数
CLR    TF0 ;计时器0溢出标志清空
       MOV    TH0, #0FFH ;重置计时器0的高8位
       MOV    TL0, #2FH ;重置计时器0的低8位
       RET

;;=============================================================================
;;计时式IO口模拟串口工作完成
;;=============================================================================

   END
附件
1000
sunsoncheng
文章数:109
年度积分:50
历史总积分:1000
注册时间:2010/5/25
发站内信
发表于:2010/12/26 12:04:57
#1楼
发送是灯会闪,同时也收到数据,只是数据不对

估计有些地方不对,但不知原因在哪里

请各位高手指点下!
18704
pqsh 版主
文章数:7350
年度积分:534
历史总积分:18704
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2010/12/27 10:19:23
#2楼
示波器看下波形.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
1000
sunsoncheng
文章数:109
年度积分:50
历史总积分:1000
注册时间:2010/5/25
发站内信
发表于:2010/12/30 19:09:02
#3楼
问题不在程序,而是因为PC机的COM口电平与单片机的电平不一样,要转换
87
gkongman
文章数:-5
年度积分:-120
历史总积分:87
注册时间:2010/12/30
发站内信
发表于:2011/1/3 18:27:06
#4楼
此楼内容不符合板块规定,不予显示! 查看原帖内容>>
17521
ahljj
文章数:3386
年度积分:233
历史总积分:17521
注册时间:2002/3/23
发站内信
发表于:2012/3/23 15:08:47
#5楼
学习一下。。。。。
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

78.0005