登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

这段汇编怎么用C实现呀?谢谢各位兄弟们了

作者:sukejia 栏目:单片机
这段汇编怎么用C实现呀?谢谢各位兄弟们了
例如下面的程序

DATA_H   EQU    30H

START:   CLR CS                     
         MOV R6,#08H    
LOOPH:   MOV A,DATA_H      ;比如DATA_H的内容是07H
         RLC A
         MOV DIN,C
         SETB SCLK
         MOV DATA_H,A
         CLR SCLK
         DJNZ R6,LOOPH
         RET
         END

本人是菜鸟变成C我是下面那么写的,但是在进行KEIL仿真的时候如下

R6=0x80    0x70  0x60  0x50  0x40  0x30  0x20  0x01  0x00   汇编程序
ACC=0x0e    0x1c  0x38  0x70  0xe0  0xc0  0x81  0x03  0x00
*********************************************************************
                     0x20  0x01  0x00  C语言
                                          0x80  0x00  0x00

谢谢各位怎么用C能写成和汇编一样的循环呀?

void write(uint addr)     //addr的内容是0x07
{
uchar i;
for(i=8;i>0;i--)
{
  din=addr&1;
  addr=addr<<1;

  sclk=1;
  if(addr!=0)
  ACC=addr;
  sclk=0;
  
}
}

2楼: >>参与讨论
zemezemed
1
void write(uint addr)     //addr的内容是0x07
{
     uchar i;
     for(i=8;i>0;i--)
     {    
        if(add&0x80)
          din=1;
        else
          din=0;
        addr<<=1;
        sclk=1;
        _nop_();
        sclk=0;
     }
}

3楼: >>参与讨论
sukejia
谢谢
感谢您了呵呵

参与讨论
昵称:
讨论内容:
 
 
相关帖子
1为什么很多时候单片机接口上都接个菲门?不是与门?
能利用两个与非门搭成RS触发器吗?
基于ZigBee的无线单片机开发平台
ICL7135第一脚需要输入的-5V 一般怎么得到啊?
疑问求解答,不知道大家注意没有
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号