主页 > 单片机请问用51单片机如何查表?

请问用51单片机如何查表?

一、请问用51单片机如何查表?

ADDA,#1;入口地址在A中MOVCA,@A+PC;本条指令后有几个字节A+几RET;如RET一字节A+1TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6

二、MCS-51单片机查表程序?

16和7是查表指令时的PC与数据表格之间的字节数

MOV A ,@R0 ;取R0指向的地址中的数据到A

ANL A,#0FH ;高四位清零

ADD A,#16 ;加16

MOVC A, @A+PC ;查表,表的首地址为绝对地址PC+A

MOVC A,@A+PC就需要1个字节啊

查表指令距离表首地址的长度是字节数

用DPTR的汇编程序:

ORG 0100H

MOV 30H,#12H

MOV 31H,#34H

MOV 32H,#56H

MOV 33H,#78H

LCALL SUBRTE

ORG 1000H

SUBRTE: MOV R0,#30H ; ;置地址指针R0初值

MOV R1,#40H ; ;置地址指针R1初值

MOV R2,#4 ; ;置字节数

LOOP: MOV A,@R0 ; ;取16进制数

ANL A,#0FH ; ;屏蔽高4位

MOV DPTR,#TABLE ; ;

MOVC A,@A+DPTR ; ;查表低4位转换为ASCⅡ码

MOV @R1,A ; ;送结果

INC R1 ; ;修改指针

MOV A,@R0 ; ;从新取16进制数

SWAP A ; ;高4位与低4位互换

ANL A,#0FH ; ;取高4位

ADD A,#7

MOVC A,@A+PC ; ;查表高4位转换为ASCⅡ码

MOV @R1,A

INC R0

INC R1

DJNZ R2,LOOP

DEC R1

RET

TABLE: DB '012345678'

DB '9ABCDEF'

END

三、51单片机如何存储数据?

不知道你是想保存什么类型的数据,是掉电保护的还是缓存的?

如果是保存掉电不保护的缓存数据,可以用单片机内部的RAM空间,包括20H~7FH直接寻址区、80H~FFH中非SFR占用的间接寻址区,在STC单片机中还有内部扩展RAM也可以使用。

如果是保存掉电保护的数据,可以在单片机外部挂机flash或eeprom芯片。目前常用的51单片机中,有部分型号可以将ROM的顶端空间配置成eeprom,用于存储这类掉电保护的数据。

四、51单片机内部数据总线是多少位?

51单片机内部数据总线是8位的,无地址总线的概念可以认为外部数据总线是8位的,外部地址总线是16位的,其中低8位和数据总线共用实际上外部四个端口32条线都可作为数据或地址线但按规定P0口作为数据和地址复用 P2口作为地址总线高8位,配合其它几个读写控制线RD WR ALE PSEN等,可以提高访问效率,如两个机器周期即可完成一次输出操作

五、用51单片机产生正弦波的查表方法?

单相的从正弦涵数中从0度到90度范围中均匀取出n个数再用256的模转换成表格数。

三相的只需从0度到30度取,可这会n要是三的公倍数。后在运行中按你的频率的不同从该表格中抽取就行了。这就是单牌机由PWM产生的正弦波中的那时间段的数。

六、51单片机内的数据如何传送?

51单片机的内部数据传送分立即数传送和寄存器传送两种方式,占用的都是内部的三总线。

不管是哪种方式,传送都分取指、取数和写入目标址三个过程。

立即数传送是cpu先取指分析,将目标址和数据写入内部总线,再将数据写入RAM或端口锁存器。

寄存器传送过程与此类似,只不过在取指之后多出一个访问源寄存器读出数据的过程。

七、51单片机可接收的数据?

他可以接受的数据是有一个格式的限制

八、51单片机数据接口怎么用?

使用51单片机需要达到以下基本条件: 1、至少要搭建一个最小系统; 2、你需要编制一个51的控制程序; 3、你需要将程序编译连接成HEX或BIN格式的代码并下载或烧录到51单片机。 这样你就可以使用这款51单片机了。 1单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。 很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。

九、51单片机多少位?

据现有资料查询,51单片机是八位。

十、51单片机多少进制?

默认是十进制的。如果hour=03。03是十进制3。十进制十六进制其实是对人来说的,是你写程序的时候区分的,如果我用串口发送十进制数30 hour=sbuf 单片机中hour=?寄存器中存贮的是0001 1110。如果我写hour++ hour是用十进制还是十六进制规则运算,这个在内存里面就是该变量位置二进制的加1,如果说在程序里面十进制和十六进制++,感觉差别不大。

热门文章