请问这段汇编程序如何用C表达

[复制链接]
2199|7
 楼主| kin0001 发表于 2010-3-31 19:43 | 显示全部楼层 |阅读模式
有几个1字节数据,例如:acvol,acele,dcvol,dcele,freq
将这几个数据使用串行口发送:
汇编程序:
acvol equ 80h
acele equ 81h
dcvol equ 82h
dcele equ 83h
freq  equ 84h

当接收到对方发送过来的数据后设置 r0=80h,中断发送
tc_ser:
clr      ti
jb      flag0,tc_ser_0
mov   sbuf,@r0
inc     r0
cjne   r0,#85h,tc_ser_0
setb   flag0
tc_ser_0:
reti

如果使用C怎样写,请各位帮下忙.:$ ,见笑啦
(主要的是连续的变量空间如何定义,还有指针,个人感觉C的指针不太好懂)
谈的元 发表于 2010-3-31 20:53 | 显示全部楼层
一个数组就是  连续的变量空间
 楼主| kin0001 发表于 2010-4-1 09:11 | 显示全部楼层
能不能详细点,我的C语言水平比较菜
john_light 发表于 2010-4-1 09:38 | 显示全部楼层
本帖最后由 john_light 于 2010-4-1 11:39 编辑

和楼主的想法有出入。

  1. serial.c
  2. [code]
  3. #define BUFF_SIZE  10

  4. unsigned char index;
  5. unsigned char TransBuff[BUFF_SIZE];

  6. void serial_int (void) interrupt 4
  7. {
  8.     unsigned char *pBuff;
  9.     unsigned char rcv;


  10.     if (RI == 1)
  11.     {
  12.         RI = 0;

  13.         rcv = SBUF;

  14.         if (rcv == 'R')/*当接收到指定字符时,准备数据并发送*/
  15.         {
  16.             pBuff = TransBuff;

  17.             *pBuff++ = acvol;
  18.             *pBuff++ = acele;
  19.             *pBuff++ = dcvol;
  20.             *pBuff++ = dcele;
  21.             *pBuff++ = freq;

  22.             SBUF = TransBuff[0];
  23.             index = 1;
  24.         }
  25.     }
  26.     else if (TI == 1)
  27.     {
  28.         TI = 0;

  29.         if (index < 5)
  30.         {
  31.             SBUF = TransBuff[index];
  32.             index++;
  33.         }
  34.     }
  35. }
gudeng614 发表于 2010-4-1 09:45 | 显示全部楼层
uchar i=0,data5[5]={};
void send_data(*data5)
{
   ti=0;
while(i<5)
  if(flag)
{ SBUF=*data5;
}
data++;i++;
}
试试这样写吧
 楼主| kin0001 发表于 2010-4-1 10:47 | 显示全部楼层
谢谢各位帮助:
4楼的程序是一次中断后把数据连续发送出去啦,我要的结果是:中断发送一个数,然后退出中断,发送完毕再次进入中断发送低二个数,直到发送完所以数据
5楼是我想要的,但是各变量没有说明啊
 楼主| kin0001 发表于 2010-4-1 10:55 | 显示全部楼层
:L,打错几个字
 楼主| kin0001 发表于 2010-4-1 13:12 | 显示全部楼层
分不够,这能给一个人的,
抱歉啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

63

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部