最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

单片机-- 简易计算器汇编程序

来源:动视网 责编:小OO 时间:2025-10-02 03:24:11
文档

单片机-- 简易计算器汇编程序

NAMET11单片机--简易计算器汇编程序;将键盘的KA10~KA12接8259的KA0~KA2;RL10~RL17接8255A的RL0~RL7;T118279键盘显示接口实验二CSEGAT0000HLJMPSTARTCSEGAT4100HSTART:MOVDPTR,#00CFE9H;8279命令字MOVA,#0D1H;清显示MOVX@DPTR,ALOOP1:MOVXA,@DPTRANLA,#0FHJZLOOP1;有键按下?没有则循环等待MOVA,#0A0H;显示\消隐命令MOVX@DPTR,
推荐度:
导读NAMET11单片机--简易计算器汇编程序;将键盘的KA10~KA12接8259的KA0~KA2;RL10~RL17接8255A的RL0~RL7;T118279键盘显示接口实验二CSEGAT0000HLJMPSTARTCSEGAT4100HSTART:MOVDPTR,#00CFE9H;8279命令字MOVA,#0D1H;清显示MOVX@DPTR,ALOOP1:MOVXA,@DPTRANLA,#0FHJZLOOP1;有键按下?没有则循环等待MOVA,#0A0H;显示\消隐命令MOVX@DPTR,
NAME T11                   单片机-- 简易计算器汇编程序

;将键盘的KA10~KA12接8259的KA0~KA2;RL10~RL17接8255A的RL0~RL7   

; T11  8279键盘显示接口实验二

CSEG AT 0000H

         LJMP START

CSEG AT 4100H

START:  MOV  DPTR,#00CFE9H      ;8279命令字

         MOV A,#0D1H       ;清显示

         MOVX @DPTR,A

LOOP1:  MOVX A,@DPTR

         ANL A,#0FH

         JZ LOOP1          ;有键按下?没有则循环等待

         MOV A,#0A0H       ;显示\消隐命令

         MOVX @DPTR,A

         MOV A,#40H        ;读FIFO命令

         MOVX @DPTR,A

         MOV DPTR,#0CFE8H  ;读键值

         MOVX A,@DPTR

         MOV  R1,A         ;保存键值      加个F

         MOV DPTR,#0CFE9H  ;写显示RAM命令

         MOV A,#80H        ;选中LED1

         MOVX @DPTR,A      

         MOV A,R1

         ANL  A,#0FH       ;取后半字节

         MOV DPTR,#TAB

         MOVC A,@A+DPTR    ;取段显码

         MOV DPTR,#0CFE8H  ;写显示RAM

         MOVX @DPTR,A

         MOV DPTR,#0CFE9H  ;写显示RAM命令

LOOP2:   MOVX A,@DPTR      ;输入显示符号

         ANL A,#0FH

         JZ LOOP2          ;有键按下?没有则循环等待

         MOV A,#0A0H       ;显示\消隐命令

         MOVX @DPTR,A

         MOV A,#40H        ;读FIFO命令 

         MOVX @DPTR,A

         MOV DPTR,#0CFE8H  ;读键值

         MOVX A,@DPTR

         MOV  R2,A         ;保存键值

         MOV DPTR,#0CFE9H  ;写显示RAM命令

         MOV A,#81H        ;选中LED2

         MOVX @DPTR,A      

         MOV A,R2

         ANL  A,#0FH       ;取后半字节

         MOV DPTR,#TAB

         MOVC A,@A+DPTR    ;取段显码

         MOV DPTR,#0CFE8H  ;写显示RAM

         MOVX @DPTR,A

         MOV DPTR,#0CFE9H  ;写显示RAM命令

LOOP3:   MOVX A,@DPTR      ;第二个数

         ANL A,#0FH

         JZ LOOP3          ;有键按下?没有则循环等待

         MOV A,#0A0H       ;显示\消隐命令

         MOVX @DPTR,A

         MOV A,#40H        ;读FIFO命令   

         MOVX @DPTR,A

         MOV DPTR,#0CFE8H  ;读键值

         MOVX A,@DPTR

         MOV  R3,A         ;保存键值

         MOV DPTR,#0CFE9H  ;写显示RAM命令

         MOV A,#82H        ;选中LED3

         MOVX @DPTR,A      

         MOV A,R3

         ANL  A,#0FH       ;取后半字节

         MOV DPTR,#TAB

         MOVC A,@A+DPTR    ;取段显码

         MOV DPTR,#0CFE8H  ;写显示RAM

         MOVX @DPTR,A

         MOV DPTR,#0CFE9H  ;写显示RAM命令

LOOP4:   MOVX A,@DPTR      ;====

         ANL A,#0FH

         JZ LOOP4          ;有键按下?没有则循环等待

         MOV A,#0A0H       ;显示\消隐命令

         MOVX @DPTR,A

         MOV A,#40H        ;读FIFO命令   

         MOVX @DPTR,A

         MOV DPTR,#0CFE8H  ;读键值

         MOVX A,@DPTR

         MOV  R4,A         ;保存键值

         MOV DPTR,#0CFE9H  ;写显示RAM命令

         MOV A,#83H        ;选中LED4

         MOVX @DPTR,A      

         MOV A,R4

         ANL  A,#0FH       ;取后半字节

         MOV DPTR,#TAB

         MOVC A,@A+DPTR    ;取段显码

         MOV DPTR,#0CFE8H  ;写显示RAM

         MOVX @DPTR,A

         MOV DPTR,#0CFE9H  ;写显示RAM命令

         CJNE R4,#0CEH,LOOP5 ;判断第四个输入是不是等于号

jia:  CJNE R2,#0cAH,jian

         MOV A,R1

         ANL A,#0FH

         MOV R1,A

         MOV A,R3

         ANL A,#0FH

         MOV R3,A

         MOV A,R1

         ADD A,R3

         LJMP XIANSHI

jian: CJNE R2,#0cBH,cheng

         MOV A,R1

         ANL A,#0FH

         MOV R1,A

         MOV A,R3

         ANL A,#0FH

         MOV R3,A

         MOV A,R1

         SUBB A,R3

         LJMP XIANSHI

cheng:CJNE R2,#0CcH,CHU

         MOV A,R1

         ANL A,#0FH

         MOV R1,A

         MOV A,R3

         ANL A,#0FH

         MOV R3,A

         MOV A,R1

         MOV B,R3

         MUL AB

         LJMP XIANSHI

CHU:     MOV A,R1

         ANL A,#0FH

         MOV R1,A

         MOV A,R3

         ANL A,#0FH

         MOV R3,A

         MOV A,R1       

         MOV B,R3

         DIV AB

         LJMP XIANSHI       ;第四个等于号运算

LOOP5:   MOVX A,@DPTR      ;第二个数

         ANL A,#0FH

         JZ LOOP5          ;有键按下?没有则循环等待

         MOV A,#0A0H       ;显示\消隐命令

         MOVX @DPTR,A

         MOV A,#40H        ;读FIFO命令   

         MOVX @DPTR,A

         MOV DPTR,#0CFE8H  ;读键值

         MOVX A,@DPTR

         MOV  R5,A         ;保存键值

         MOV DPTR,#0CFE9H  ;写显示RAM命令

         MOV A,#84H        ;选中LED5

         MOVX @DPTR,A      

         MOV A,R5

         ANL  A,#0FH       ;取后半字节

         MOV DPTR,#TAB

         MOVC A,@A+DPTR    ;取段显码

         MOV DPTR,#0CFE8H  ;写显示RAM

         MOVX @DPTR,A

         MOV DPTR,#0CFE9H  ;写显示RAM命令

         CJNE R5,#0CEH,LOOP6;  panduandi五个是等于号

         MOV A,R4           

         ANL A,#0FH

         MOV R4,A

         MOV A,R1

         ANL A,#0FH

         MOV R1,A

         CJNE R2,#0CAH,TIAO2  ;人为地忽略单位数减双位数

         MOV A,R3            ;加法,第二个是符号

         ANL A,#0FH

         MOV R3,A

         MOV B,#0AH

         MUL AB

         ADD A,R4

         ADDC A,R1

         LJMP XIANSHI                    

TIAO2   :CJNE R2,#0CCH,TIAO4 ;人为地忽略分数

         MOV A,R3            ;乘法,第二个是符号

         ANL A,#0FH

         MOV R3,A

         MOV B,#0AH

         MUL AB

         ADD A,R4

         MOV B,R1

         MUL AB

         LJMP XIANSHI         

TIAO4    :CJNE R3,#0CAH,TIAO5;加法,第三个是符号

         MOV A,R2

         ANL A,#0FH

         MOV R2,A

         MOV B,#0AH

         MOV A,R1

         MUL AB

         ADD A,R2

         ADDC A,R4 

         LJMP XIANSHI  

TIAO5   :CJNE R3,#0CBH,TIAO6;减法,第三个是符号

         MOV A,R2

         ANL A,#0FH

         MOV R2,A

         MOV B,#0AH

         MOV A,R1

         MUL AB

         ADD A,R2

         SUBB A,R4

         LJMP XIANSHI     

TIAO6    :CJNE R3,#0CCH,TIAO7;乘法,第三个是符号

         MOV A,R2

         ANL A,#0FH

         MOV R2,A

         MOV B,#0AH

         MOV A,R1

         MUL AB

         ADD A,R2

         MOV B,R4

         MUL AB

         LJMP XIANSHI                      

TIAO7    : MOV A,R2          ;除法,第三个是符号

         ANL A,#0FH

         MOV R2,A

         MOV B,#0AH

         MOV A,R1

         MUL AB

         ADD A,R2

         MOV B,R4

         DIV AB

         LJMP XIANSHI                                

LOOP6:   MOVX A,@DPTR      ;====

         ANL A,#0FH

         JZ LOOP6          ;有键按下?没有则循环等待

         MOV A,#0A0H       ;显示\消隐命令

         MOVX @DPTR,A

         MOV A,#40H        ;读FIFO命令   

         MOVX @DPTR,A

         MOV DPTR,#0CFE8H  ;读键值

         MOVX A,@DPTR

         MOV  R6,A         ;保存键值

         MOV DPTR,#0CFE9H  ;写显示RAM命令

         MOV A,#85H        ;选中LED6

         MOVX @DPTR,A      

         MOV A,R6

         ANL  A,#0FH       ;取后半字节

         MOV DPTR,#TAB

         MOVC A,@A+DPTR    ;取段显码

         MOV DPTR,#0CFE8H  ;写显示RAM

         MOVX @DPTR,A

         MOV DPTR,#0CFE9H  ;写显示RAM命令

         MOV A,R1

         ANL A,#0FH

         MOV R1,A

         MOV A,R2

         ANL A,#0FH

         MOV R2,A

         MOV A,R4

         ANL A,#0FH

         MOV R4,A

         MOV A,R5

         ANL A,#0FH

         MOV R5,A

         MOV B,#0AH

         MOV A,R1

         MUL AB

         ADD A,R2

         MOV R7,A         ;把12放到R7

         MOV B,#0AH

         MOV A,R4

         MUL AB

         ADD A,R5

         MOV R1,A         ;把45放到R1

         CJNE R3,#0CAH,JIAN1

         MOV A,R7

         ADDC A,R1

         LJMP XIANSHI 

JIAN1: CJNE R3,#0CBH,CHENG1

         MOV A,R7

         SUBB A,R1

         LJMP XIANSHI

CHENG1:CJNE R3,#0CCH,CHU1

         MOV A,R7

         MOV B,R1

         MUL AB

         LJMP XIANSHI

CHU1:    MOV A,R7

         MOV B,R1

         DIV AB

         LJMP XIANSHI

XIANSHI: ;MOV R1,A

         ;MOV  DPTR,#00CFE9H      ;8279命令字

         ;MOV A,#0D1H       ;清显示

         ;MOVX @DPTR,A

         ;MOV A,R1       

         MOV R0,A          ;jieguo

         SUBB A,#H        ;HE 100 BI JIAO

         JC DENG2          ;XIAOYU 100 TIAO

         MOV A,R0

         MOV B,#H         ;SAN WEI SHU QU BAI WEI

         DIV AB

         MOV R4,A           ;BAI WEI SHU FANG R4

         MOV A,B            ;QU BAI HOU YU SHU GEI a

         MOV B,#0AH

         DIV AB             ;QU SHI WEI

         MOV R5,A           ;SHI WEI FANG R5

         MOV R6,B           ;GE WEI SHU FANG R6

         MOV DPTR,#0CFE9H  ;写显示RAM命令   BAI WEI DENG

         MOV A,#80H        ;选中LED1

         MOVX @DPTR,A      

         MOV A,R4

         ANL  A,#0FH       ;取后半字节

         MOV DPTR,#TAB

         MOVC A,@A+DPTR    ;取段显码

         MOV DPTR,#0CFE8H  ;写显示RAM

         MOVX @DPTR,A

         MOV DPTR,#0CFE9H  ;写显示RAM命令  ;       

         MOV DPTR,#0CFE9H  ;写显示RAM命令    SHI WEI DENG

         MOV A,#81H        ;选中LED2

         MOVX @DPTR,A      

         MOV A,R5

         ANL  A,#0FH       ;取后半字节

         MOV DPTR,#TAB

         MOVC A,@A+DPTR    ;取段显码

         MOV DPTR,#0CFE8H  ;写显示RAM

         MOVX @DPTR,A

         MOV DPTR,#0CFE9H  ;写显示RAM命令 ;

         MOV DPTR,#0CFE9H  ;写显示RAM命令    GE WEI DENG

         MOV A,#82H        ;选中LED3

         MOVX @DPTR,A      

         MOV A,R6

         ANL  A,#0FH       ;取后半字节

         MOV DPTR,#TAB

         MOVC A,@A+DPTR    ;取段显码

         MOV DPTR,#0CFE8H  ;写显示RAM

         MOVX @DPTR,A

         MOV DPTR,#0CFE9H  ;写显示RAM命令;

         LJMP LOOP1

DENG2  : MOV A,R0

         CLR C              ;上面借位清0

         SUBB A,#0AH

         JC DENG3

         MOV A,R0

         MOV B,#0AH

         DIV AB

         MOV R4,A        ;SHI WEI GEI R4

         MOV R5,B        ;GE WEI GEI R5

         MOV DPTR,#0CFE9H  ;写显示RAM命令   SHI WEI DENG

         MOV A,#80H        ;选中LED1

         MOVX @DPTR,A      

         MOV A,R4

         ANL  A,#0FH       ;取后半字节

         MOV DPTR,#TAB

         MOVC A,@A+DPTR    ;取段显码

         MOV DPTR,#0CFE8H  ;写显示RAM

         MOVX @DPTR,A

         MOV DPTR,#0CFE9H  ;写显示RAM命令;

         MOV DPTR,#0CFE9H  ;写显示RAM命令   GE WEI DENG

         MOV A,#81H        ;选中LED2

         MOVX @DPTR,A      

         MOV A,R5

         ANL  A,#0FH       ;取后半字节

         MOV DPTR,#TAB

         MOVC A,@A+DPTR    ;取段显码

         MOV DPTR,#0CFE8H  ;写显示RAM

         MOVX @DPTR,A

         MOV DPTR,#0CFE9H  ;写显示RAM命令;

         LJMP LOOP1

DENG3  : MOV A,R0

         MOV DPTR,#0CFE9H  ;写显示RAM命令

         MOV A,#80H        ;选中LED1

         MOVX @DPTR,A      

         MOV A,R0

         ANL  A,#0FH       ;取后半字节

         MOV DPTR,#TAB

         MOVC A,@A+DPTR    ;取段显码

         MOV DPTR,#0CFE8H  ;写显示RAM

         MOVX @DPTR,A

         MOV DPTR,#0CFE9H  ;写显示RAM命令;

         LJMP LOOP1

TAB:     DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H  ;段显码表

         db 7fh,6fh,77h,7ch,39h,5eh,79h,71h

END

文档

单片机-- 简易计算器汇编程序

NAMET11单片机--简易计算器汇编程序;将键盘的KA10~KA12接8259的KA0~KA2;RL10~RL17接8255A的RL0~RL7;T118279键盘显示接口实验二CSEGAT0000HLJMPSTARTCSEGAT4100HSTART:MOVDPTR,#00CFE9H;8279命令字MOVA,#0D1H;清显示MOVX@DPTR,ALOOP1:MOVXA,@DPTRANLA,#0FHJZLOOP1;有键按下?没有则循环等待MOVA,#0A0H;显示\消隐命令MOVX@DPTR,
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top