请教C51单片机,C语言编程,怎样把一个四位数存入(读取)外部数据存储器?请举例说明。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教C51单片机,C语言编程,怎样把一个四位数存入(读取)外部数据存储器?请举例说明。相关的知识,希望对你有一定的参考价值。

//外部绝对地址定义,具体地址根据你所需存在哪个地址单元而定
#define uchar unsigned char
#define uint unsigned int

uchar xdata XRAM _at_ 0xFF00[4];//指定外部存储地址
uchar DATA1[4]; //你先把你的四位数每位单独分离出来存到这个4成员数组
void main(void)

uchar i;
for(i=0;i<4;i++)

XRAM[i]=DATA1[i]

参考技术A 设定变量,为XDATA类型。 参考技术B 1.将四位数分离分别为Data1,Data2,Data3,Data,4.
2.使用4次循环分别将四个数放入指定的寄存器里。
参考技术C 首先需要外部存储地址,采用全编地址还是部分编址
然后采用MOVX 地址,立即数 ;
指令传送

keil怎样把C语言转换成单片机汇编语言

有C语言程序加载在KEIL中 怎样可以获得单片机汇编语言

1、打开Keil,新建一个51工程,同时新建一个main.c文件,并加入到工程源代码当中。

2、再点击新建文件按钮,新建一个汇编语言源文件:test.asm,并将它保存到指定目录。

3、在test.asm当中输入下面的代码。

4、代码编写完成后,需要将test.asm加入到工程当中,即鼠标右键点击对应工程的源程序文件夹,选择“Add Files to Group……”,软件会弹出“Add Files to Group……“对话框。

5、Keil默认的源文件是c,输入*.asm查找所有汇编语言源文件,确定后点击“Add”按钮,然后会显示该目录所有的asm文件,选择该文件再次点击“Add”即可完成添加。

6、添加完test.asm后,回到main.c,对test_fun进行声明调用,然后编译即可,正常情况是不会出现Error也不会出现Warning。

7、如果在汇编源程序的函数前没有添加RSEG语句则在编译时会出现下面的错误和警告。

参考技术A

首先在keil里,设置选项时,在列表选项中的汇编代码一项打勾。见下图

然后编译,编译后,在工程的同一个文件夹下有一个.LST文件,打开就看到了汇编代码,不过,需要自己进行整理,否则,是不能直接作为汇编程序的。

下面是一个例子:这是一个主程序的汇编代码,格式就是这样的。

             ; FUNCTION main (BEGIN)

                                           ; SOURCE LINE # 16

;---- Variable 'k' assigned to Register 'R4' ----

                                           ; SOURCE LINE # 17

                                           ; SOURCE LINE # 19

0000 D2B2              SETB    light

0002         ?C0007:

                                           ; SOURCE LINE # 20

                                           ; SOURCE LINE # 21

                                           ; SOURCE LINE # 23

0002 7F05              MOV     R7,#05H

0004 120000      R     LCALL   _delayms

                                           ; SOURCE LINE # 25

0007 300008      R     JNB     blink,?C0009

                                           ; SOURCE LINE # 26

                                           ; SOURCE LINE # 27

000A 0C                INC     R4

                                           ; SOURCE LINE # 28

000B BC2804            CJNE    R4,#028H,?C0009

                                           ; SOURCE LINE # 29

                                           ; SOURCE LINE # 30

000E B2B2              CPL     light

                                           ; SOURCE LINE # 31

0010 E4                CLR     A

0011 FC                MOV     R4,A

                                           ; SOURCE LINE # 32

                                           ; SOURCE LINE # 33

0012         ?C0009:

                                           ; SOURCE LINE # 34

0012 20B7ED            JB      k0,?C0007

                                           ; SOURCE LINE # 35

C51 COMPILER V7.00  LIGHT1                                                                 09/14/2015 12:54:15 PAGE 3   


                                           ; SOURCE LINE # 36

0015 B200        R     CPL     blink

                                           ; SOURCE LINE # 37

0017 200004      R     JB      blink,?C0012

001A D2B2              SETB    light

001C 8002              SJMP    ?C0014

001E         ?C0012:

                                           ; SOURCE LINE # 38

001E E4                CLR     A

001F FC                MOV     R4,A

0020         ?C0014:

                                           ; SOURCE LINE # 39

0020 20B7DF            JB      k0,?C0007

0023 80FB              SJMP    ?C0014

             ; FUNCTION main (END)

参考技术B 右击C文件,进入“options for files '**.C' ”勾选这两项,再编译就会出现一个"*.src"的文件,这就是C语言的汇编文件了。自己操作一下就会的,加油,还有,当有汇编和C语言混合编程时也要选这两项。 参考技术C 只要编译通过,在调试仿真里面,程序列表就是C与汇编混合显示。

以上是关于请教C51单片机,C语言编程,怎样把一个四位数存入(读取)外部数据存储器?请举例说明。的主要内容,如果未能解决你的问题,请参考以下文章

51单片机中断 C语言?请教!

C51与ANSI C语言的差异分析

KeiluVisionRealViewMDKKeil C51之间的区别比较

c 语言中 bit与sbit的区别

单片机Keil C51 C语言多文件如何使用全局位变量?跪拜!!

Arduino编程都用啥语言?c51还是啥?