基于单片机双字节简易计算器程序设计.doc
文本预览下载声明
;================= Const ===============================
SysStack Equ 07h ;08H...1FH
Dark Equ 10H
;----------------- Hardware ----------------------------
DisSegPort Equ 0000H ;0:Light up
DisCSPort Equ 2000H ;1:Select
KeyOutPort Equ DisCSPort;Key Output Port
;KeyInout:p1.0,P.1..P1.3 ;0:Pressed
;------------------ Byte Units -------------------------
KeyGetF Bit 20H ;1:Get A New Key
KeyPress Bit 21H ;1:Key Released
SumPress Bit 22H ;1 +
SumPress1 Bit 23H
EqualPress Bit 24H ;1 =
DivPress Bit 25H ;1 /
DivPress1 Bit 26H
MulPress Bit 27H ;1 *
MulPress1 Bit 28H
SubbPress Bit 29H ;1 -
SubbPress1 Bit 31H
NegPress Bit 32H
NegPress1 Bit 33H ;+/-
NegPress2 Bit 34H
DataPress Bit 35H ;数字键
FuncPress Bit 36H ;运算功能键
Sign Bit 37H
KeyCode Equ 60H
DisBuf Equ 70H;..75H
DeciPos Equ 76H ;Bit=1:Show DeciPoint
SumVa Equ 77H ;press func KEY,Memory the DATA ON dis
DivVa Equ 78H ;the same UP
MulVa Equ 79H ;the same UP
SubbVa Equ 85H ;the same UP
;=======================================================
Org 0000H
AJmp Main
;=======================================================
Display: Mov R1, ;R1=DisCS
Mov R0,#DisBuf ;DisBuf Pointer
DisLoop: Mov B,#0FFH
Mov A,DeciPos ;小数点?
Anl A,R1
Jz DisNext ;0没小数点
Clr B.7 ;1小数点
DisNext: Mov Dptr,#DisCSPort;Do Display CS
Mov A,R1
Movx @Dptr,A
Mov A,@R0 ;Get Dis Char
Mov Dptr,#DisTab
Movc A,@A+Dptr
Anl A,B
Mov Dptr,#DisSegPort;Use Table
Movx @Dptr,A ;Send to DisSeg Port
ACall Delay
Inc R0
显示全部