打印

c51中如何内嵌模拟串口通信的汇编程序?

[复制链接]
1962|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhangyunsheng|  楼主 | 2011-9-18 01:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用C语言写了个程序,但是这里要求不用标准串口发送数据,而是用模拟串口的方式发送数据。波特率是38400,所以对精度要求比较高。直接用C51写,我担心不行,所以我打算用汇编,因为汇编清晰,一目了然,对时间的控制非常精确。但是该如何嵌入汇编呢?下面是我的子程序:

//以下是宏定义的一部分
#define uchar usigned char  
sbit BUSY=P3^0//定义恒嵌科技VLCM-12864忙信号口
sbit TRX=P3^1//定义串口发送信号口线

//以下是发送数据的子函数
void send_byte(uchar a)//通过串口发送一字节数据
{
uchar i;
i=8;//需要发送的位数
while(~BUSY);//BUSY==1是“恒嵌VLCM-12864”表示允许接受,反之不允许接收
while(i--)
{
TRX=a&0x01;//取其最低位放到模拟串口线
TR0=1;//打开定时器
while(TR0);//定时器0中断服务程序中只是把TR0置0,所以检测TR0是否为0,以判断是否到点
a>>=1;//右移一位       
}   
}

我如果想在子函数 void send_byte(uchar a)内部嵌入汇编程序,该怎么办呢?上网搜索了一些信息,也很乱,不知所云,在此有请高手给出一些建议……

我想嵌入以下汇编程序:

SEND_BYTE:       
PUSH PSW
JNB        TX_IO,        $;检测忙信号
CLR        C        ;->发送起始位
MOV        TX_IO,        C
SETB        TR0
JB        TR0,        $;-<
RRC        A        ;->发送第一位
MOV        TX_IO,        C
SETB        TR0
JB        TR0,        $;-<       
RRC        A        ;->发送第二位
MOV        TX_IO,        C
SETB        TR0
JB        TR0,        $;-<       
RRC        A        ;->发送第三位
MOV        TX_IO,        C
SETB        TR0
JB        TR0, $;-<       
RRC        A        ;->发送第四位
MOV        TX_IO,        C
SETB        TR0
JB        TR0,        $;-<       
RRC        A        ;->发送第五位
MOV        TX_IO,        C
SETB        TR0
JB        TR0,        $;-<       
RRC        A        ;->发送第六位
MOV        TX_IO,        C
SETB        TR0
JB        TR0,        $;-<       
RRC        A        ;->发送第七位
MOV        TX_IO,        C
SETB        TR0
JB        TR0,        $;-<       
RRC        A        ;->发送第八位
MOV        TX_IO,        C
SETB        TR0
JB TR0,        $;-<       
SETB        C        ;->发送终止位
MOV        TX_IO,        C
SETB        TR0
JB        TR0,        $;-<       
POP        PSW
RET

相关帖子

沙发
Cortex-M0| | 2011-9-18 07:33 | 只看该作者
可参照下列联接的汇编实例。

[侃单片机] 主题:中颖《8-32位混合运算》定点运算程序库
https://bbs.21ic.com/icview-267445-1-1.html

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

33

帖子

1

粉丝