在51单片机中关于用查表给定时器赋初值的问题
答案:4 悬赏:70 手机版
解决时间 2021-11-24 20:40
- 提问者网友:绫月
- 2021-11-24 02:02
在51单片机中关于用查表给定时器赋初值的问题
最佳答案
- 五星知识达人网友:患得患失的劫
- 2021-11-24 03:22
TABLE: DW 0FA15H,0FA67H,0FB04H,0FB90H(16进制)
……
DW伪指令,把一个字:FA 15,分别存放在两个字节单元中,其它的字,也都是分别存放的。
……
MOV DPTR,#TABLE1
MOVC A,@A+DPTR -- 从一个字中,读出一个字节
……
INC TEMP --加一
MOV A,TEMP
MOVC A,@A+DPTR -- 从同一个字中,读出另一个字节
……
------------------------------------------------
DW伪指令,是存放两个字节的。
从TABLE:开始,
第0、1字节,存放了15 FA;
第2、3字节,存放了67 FA;
第4、5字节,存放了04 FB;
第6、7字节,存放了90 FB;
……。
从中找第N个字,就要从N*2的地址去找,所以前面有个(要×2呢?)。
MOV A,BUFF,假设BUFF=1
×2后,存放到TEMP,再用MOVC A,@A+DPTR,即可从一个字中,读出一个字节,即67H;
INC TEMP --加一后,再用MOVC A,@A+DPTR,即可从一个字中,读出另一个字节,即FAH。
……
DW伪指令,把一个字:FA 15,分别存放在两个字节单元中,其它的字,也都是分别存放的。
……
MOV DPTR,#TABLE1
MOVC A,@A+DPTR -- 从一个字中,读出一个字节
……
INC TEMP --加一
MOV A,TEMP
MOVC A,@A+DPTR -- 从同一个字中,读出另一个字节
……
------------------------------------------------
DW伪指令,是存放两个字节的。
从TABLE:开始,
第0、1字节,存放了15 FA;
第2、3字节,存放了67 FA;
第4、5字节,存放了04 FB;
第6、7字节,存放了90 FB;
……。
从中找第N个字,就要从N*2的地址去找,所以前面有个(要×2呢?)。
MOV A,BUFF,假设BUFF=1
×2后,存放到TEMP,再用MOVC A,@A+DPTR,即可从一个字中,读出一个字节,即67H;
INC TEMP --加一后,再用MOVC A,@A+DPTR,即可从一个字中,读出另一个字节,即FAH。
全部回答
- 1楼网友:酒者煙囻
- 2021-11-24 07:42
汇编不懂,如果用C语言就简单的多了
TH0 = (数组名)【i】/ 256;
TL0 = (数组名)【i】%256;
TH0 = (数组名)【i】/ 256;
TL0 = (数组名)【i】%256;
- 2楼网友:何以畏孤独
- 2021-11-24 06:06
楼主的这个问题,是查找1个字,共2个字节,有点麻烦。
建议楼主先研究简单的,1个字节的,查表程序。
--
一般数码管显示,需要查出7段码,这就是1个字节的查表程序。
把这个弄清楚了,现在谈的2字节查表,就迎刃而解了。
建议楼主先研究简单的,1个字节的,查表程序。
--
一般数码管显示,需要查出7段码,这就是1个字节的查表程序。
把这个弄清楚了,现在谈的2字节查表,就迎刃而解了。
- 3楼网友:低血压的长颈鹿
- 2021-11-24 04:27
查表只是一句,MOVC A,@A+DPTR,把DPTR+A里的值取出来放到A中,然后对TL赋值就行了,MOV TL0,A,把A中的数据赋给TL0,因为TL0是8位的,所以传送的时候只会将A的低8位赋给TL0,那个乘2,是因为那个表里的数据是16位的,双字节
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯