本帖最后由 szshawn2010 于 2010-1-18 11:47 编辑
用过义隆芯片的哥们告诉俺如何建表.谢谢!!
如果你心情好,再请你详细解说下
1.该表用于"显示"的思路方法步骤.譬如:用于数码管显示 1,2,3,...
2.与该表用于查找比对"数值"的方法思路步骤.譬如,一个热敏电阻测温度的板子.如何建立了一个 阻值--温度的对应二维表,然后又如何根据芯片测量的阻值,来对应这个表格,查出相对应的温度.
谢过再谢过~`学习至凌晨3点还不曾休息,已经奋战9个小时了,难啊!
********************感下下面的各位兄长的帮助***********************************
按照跟贴的各位兄弟的教导,我写了以下的程序.
我想,程序的思路不会有问题,可能是有些语句有些不妥或矛盾.以致不能按预期的方式工作
在编译时,下面的源代码是可以编译成功的.
再次恳请,心情好的兄弟,用过义隆153的朋友帮我指点一二.
其功能是:有两个按键,两个8字数码管
按键1按下时,数值会加1( P60按下时,会加1)
按键1,与2同时按下,数值减1 (P52按下时,会减1)
知道大家都比较忙,也没闲心情看这样的垃圾程序.恳请各位兄长,一人仅看一小段,心情好就看两段.这样一个接着一个的看下去.就能完成整篇检查了.谢谢
ORG 0x00
JMP main
ORG 0x08
JMP INTO_
ORG 0x10
diSplay: ; 显示的译码表 从0-9
add $,a
retl @0x7f ;0
retl @0x0d ;1
retl @0xb7 ;2
retl @0x9f ;3
retl @0xcd ;4
retl @0xdb ;5
retl @0xfb ;6
retl @0x0f ;7
retl @0xff ;8
retl @0xdf ;9
ORG 0x30
;**************************
;MAIN 程序,包括 对通用寄存器的清理
; I/O方向的设置
; 定时器中断功能的开启
; 持续的按键扫描
;**************************
main:
NOP
NOP
NOP
CLR 0X10 ;0→0X10 ;通用寄存器0X10作为一个计数器
;按键+,则0X10就+1,按键-,则0X10就-1
;0X10的数值被转换成十进制后,其低四位即是个位数值,高四位即是十位数值
CLR 0X11 ;0→0X11
CLR 0X12
CLR 0X13
CLR 0X14
CLR 0X15
MOV a,@0x01
IOW 6 ;p60设为输入,其余为输出
MOV A,@0X04
IOW 5 ;P52,为输入脚,其他为输出
MOV A,@0X00
MOV 5,A
MOV 6,A
BS 6,0 ;P60端口为按键.这里将P60端口设置为高电平
BS 5,2 ;P53端口为按键.这里将P53端口设置为高电平
;;--------------------
;; 以下进行定时器中断开启设定
;;--------------------
MOV A,@0X05
CONTW
BS 0X0F,0
ENI ;定时中断开启
;;--------------------
;; 主程序中的扫键
;;--------------------
SCAN:
JBC 6,0
JMP SCAN
CALL YANSHI_
JBC 6,0
JMP SCAN
JBC 5,2
JMP ADD1 ;跳转到 '向上加1子程序'
JMP SUB1 ;否则跳转到 '向下减1子程序'
NOP
NOP
NOP
JMP SCAN ;担心中断返回来之后,程序向下跑,所以这里加了一句,JMP SCAN.
;不知这一句是否是多余
;;---------------------
;; 向上加1子程序
;;---------------------
ADD1:
MOV A,@0X62 ;98被放入ACC中
SUB A,0X10 ;R10-98→A.R10是计数累加器
MOV 0X11,A ;A→R11
DJZA 0X11 ;R11-1→A,IF=0则跳转到$+2
INC 0X10 ;不等于0,说明数值未达到99,可以累加
;R10+1→R10 ,加完数值后应返回主程序
NOP
NOP
JMP SCAN ;=0,说明数值已经达到99,不再累加
;;------------------------------
;; 向下减1子程序
;;------------------------------
SUB1:
MOV A,0X10 ;R10被放入ACC中
ADD A,1
MOV 0X11,A
DJZ 0X11 ;R10+1-1→R11,结果=0则跳转
DEC 0X10
NOP
NOP
JMP SCAN
;;------中断子程序-----
INTO_:
INC 0X12
JBC 0X12,1
JMP OD ;跳到个位显示程序
JMP ODD ;跳到十位显示程序
OD:
MOV A,0X10 ;0X10记录按键+与按键-,当按键+时,其数值加,按键-时,其数值-
DAA
AND A,@0B00001111
CALL DISPLAY
NOP
NOP
NOP
JMP DISPLAY_1:
ODD:
MOV A,0X10
DAA
AND A,@0B11110000
MOV 0x11,A
SWAP 0X11
MOV A,0X11
CALL DISPLAY
NOP
NOP
NOP
JMP DISPLAY_2
DISPLAY_1:
MOV 6,A
JBC 6,3
JMP ONE
JMP TWO
ONE:
BC 5,1
BS 5,3
BS 5,0
NOP
NOP
JMP RE_FIT
TWO:
BC 5,1
BC 5,3
BS 5,0
NOP
NOP
JMP RE_FIT
DISPLAY_2:
MOV 6,A
JBC 6,3
JMP ONE1
JMP TWO1
ONE1:
BC 5,0
BS 5,3
BS 5,1
JMP RE_FIT
TWO1:
BC 5,0
BC 5,3
BS 5,1
RE_FIT:
BC 0X0F,0
RETI
;;;----------------------
;; 延时子程序
;;-----------------------
YANSHI_:
MOV A,@0X30
MOV 0X15,A
DE2:MOV A,@0X03
MOV 0X14,A
DE1:MOV A,@0X90
MOV 0X13,A
DJZ 0X13
JMP $-1
DJZ 0X14
JMP DE1
DJZ 0X15
JMP DE2
RET
NOP
NOP
END |