单片机查表编程的思路

2025-04-29 19:43:38
推荐回答(2个)
回答1:

A(秒十位指针)
MOV DPTR,#TAB ;数据表头地址送DPTR
MOVC A,@A+DPTR ;读取数据表中相应的数据(秒十位)
CLR P1.0 ;P1.0 清零(秒十位标志位)
MOV P0,A;显示妙计数的十位(秒十位由P0口输出)
LCALL DELAY;调延时子程序
SETB P1.0;P1.0 置1
MOV A,12H ;12H单元内容送A(秒个位指针)
MOVC A,@A+DPTR ;读取数据表中相应的数据(秒个位)
CLR P1.1 ;P1.1 清零(秒个位标志位)
MOV P0,A;显示妙计数的个位 (秒个位由P0口输出)
LCALL DELAY1;延时子程序
SETB P1.1 ;P1.1 置1
MOV A,21H ;21H单元内容送A(分十位指针)
MOV DPTR,#TAB ;数据表头地址送DPTR(此句可以不要)
MOVC A,@A+DPTR ;读取数据表中相应的数据(分十位)
CLR P1.2 ;P1.2 清零(分十位标志)
MOV P0,A;显示分计数的十位 (分十位由P0口输出)
LCALL DELAY2;调延时子程序
SETB P1.2 ;P1.2 置1
MOV A,22H ;22H单元内容送A(分个位指针)
MOVC A,@A+DPTR ;读取数据表中相应的数据(分个位)
CLR P1.3 ;P1.3 清零(分个位标志)
MOV P0,A;显示分计数的个位 (分个位由P0口输出)
LCALL DELAY3;延时子程序
SETB P1.3 ;P1.3 置1
MOV A,31H ;31H单元内容送A(时十位指针)
MOV DPTR,#TAB ;数据表头地址送DPTR(此句可以不要)
MOVC A,@A+DPTR ;读取数据表中相应的数据(时十位)
CLR P1.4 ;P1.4 清零(时十位标志)
MOV P0,A;显示时计数的十位(时十位指针由P0口输出)
LCALL DELAY4;调延时子程序
SETB P1.4 ;P1.4 置1
MOV A,32H;32H单元内容送A (时个位指针)
MOVC A,@A+DPTR ;读取数据表中相应的数据(时个位)
CLR P1.5 ;P1.5 清零(时个位标志)
MOV P0,A;显示时计数的个位 (时个位指针由P0口输出)
LCALL DELAY5;延时子程序
SETB P1.5 ;P1.5 置1
LCALL CCTV ;调子程序CCTV
RET ;中断返回

回答2:

我要改变一个地方的数据,我要怎么知道其它的哪些地方需要修改呢?这是什么意思??
查表是已知一个表呀,我们一般是用第一个数据的地址(如数组的名称)和偏移量确定要查的数据,搞定偏移量那就看你要查的表的数据是怎么编排的了(数据的类型和第几个等)。
不知道我啰嗦这么多是不是你想要的,呵呵