1、1CSEG AT 0000HLJMP STARTCSEG AT 4100HSTART: MOV DPTR,#00CFE9H ;8279 命令字MOV A,#0D1H ;清显示MOVX DPTR,ALOOP1: MOVX A,DPTR ;输入第一个数的十位ANL A,#0FHJZ LOOP1 ;有键按下?没有则循环等待MOV A,#0A0H ;显示消隐命令MOVX DPTR,AMOV A,#40H ;读 FIFO 命令MOVX DPTR,AMOV DPTR,#0CFE8H ;读键值MOVX A,DPTRMOV R1,A ;保存键值MOV DPTR,#0CFE9H ;写显示 RAM 命令MOV A
2、,#80H ;选中 LED1MOVX DPTR,A MOV A,R1ANL A,#0FH ;取后半字节MOV DPTR,#TABMOVC A,A+DPTR ;取段显码MOV DPTR,#0CFE8H ;写显示 RAMMOVX DPTR,AMOV DPTR,#0CFE9H ;写显示 RAM 命令LOOP2: MOVX A,DPTR ;输入第一个数的个位ANL A,#0FHJZ LOOP2 ;有键按下?没有则循环等待MOV A,#0A0H ;显示消隐命令MOVX DPTR,AMOV A,#40H ;读 FIFO 命令 MOVX DPTR,AMOV DPTR,#0CFE8H ;读键值MOVX A,D
3、PTRMOV R2,A ;保存键值MOV DPTR,#0CFE9H ;写显示 RAM 命令MOV A,#81H ;选中 LED2MOVX DPTR,A MOV A,R2ANL A,#0FH ;取后半字节MOV DPTR,#TABMOVC A,A+DPTR ;取段显码MOV DPTR,#0CFE8H ;写显示 RAM2MOVX DPTR,AMOV DPTR,#0CFE9H ;写显示 RAM 命令LOOP3: MOVX A,DPTR ;输入运算符ANL A,#0FHJZ LOOP3 ;有键按下?没有则循环等待MOV A,#0A0H ;显示消隐命令MOVX DPTR,AMOV A,#40H ;读 F
4、IFO 命令 MOVX DPTR,AMOV DPTR,#0CFE8H ;读键值MOVX A,DPTRMOV R3,A ;保存键值MOV DPTR,#0CFE9H ;写显示 RAM 命令MOV A,#82H ;选中 LED3MOVX DPTR,A MOV A,R3ANL A,#0FH ;取后半字节MOV DPTR,#TABMOVC A,A+DPTR ;取段显码MOV DPTR,#0CFE8H ;写显示 RAMMOVX DPTR,AMOV DPTR,#0CFE9H ;写显示 RAM 命令LOOP4: MOVX A,DPTR ;输入第二个数的十位ANL A,#0FHJZ LOOP4 ;有键按下?没有
5、则循环等待MOV A,#0A0H ;显示消隐命令MOVX DPTR,AMOV A,#40H ;读 FIFO 命令 MOVX DPTR,AMOV DPTR,#0CFE8H ;读键值MOVX A,DPTRMOV R4,A ;保存键值MOV DPTR,#0CFE9H ;写显示 RAM 命令MOV A,#83H ;选中 LED4MOVX DPTR,A MOV A,R4ANL A,#0FH ;取后半字节MOV DPTR,#TABMOVC A,A+DPTR ;取段显码MOV DPTR,#0CFE8H ;写显示 RAMMOVX DPTR,AMOV DPTR,#0CFE9H ;写显示 RAM 命令LOOP5:
6、 MOVX A,DPTR ;输入第二个数的个位ANL A,#0FH3JZ LOOP5 ;有键按下?没有则循环等待MOV A,#0A0H ;显示消隐命令MOVX DPTR,AMOV A,#40H ;读 FIFO 命令 MOVX DPTR,AMOV DPTR,#0CFE8H ;读键值MOVX A,DPTRMOV R5,A ;保存键值MOV DPTR,#0CFE9H ;写显示 RAM 命令MOV A,#84H ;选中 LED5MOVX DPTR,A MOV A,R5ANL A,#0FH ;取后半字节MOV DPTR,#TABMOVC A,A+DPTR ;取段显码MOV DPTR,#0CFE8H ;写
7、显示 RAMMOVX DPTR,AMOV DPTR,#0CFE9H ;写显示 RAM 命令LOOP6: MOVX A,DPTR ;输入等于号ANL A,#0FHJZ LOOP6 ;有键按下?没有则循环等待MOV A,#0A0H ;显示消隐命令MOVX DPTR,AMOV A,#40H ;读 FIFO 命令 MOVX DPTR,AMOV DPTR,#0CFE8H ;读键值MOVX A,DPTRMOV R6,A ;保存键值MOV DPTR,#0CFE9H ;写显示 RAM 命令MOV A,#85H ;选中 LED6MOVX DPTR,A MOV A,R6ANL A,#0FH ;取后半字节MOV D
8、PTR,#TABMOVC A,A+DPTR ;取段显码MOV DPTR,#0CFE8H ;写显示 RAMMOVX DPTR,AMOV DPTR,#0CFE9H ;写显示 RAM 命令MOV A,R1 ;数据处理ANL A,#0FHMOV R1,AMOV A,R2ANL A,#0FHMOV R2,A4MOV A,R3ANL A,#0FHMOV R3,AMOV A,R4ANL A,#0FHMOV R4,AMOV A,R5ANL A,#0FHMOV R5,AMOV A,R1 ;个位与十位数字合并MOV B,#00AHMUL ABADD A,R2MOV R1,AMOV A,R4 ;个位与十位数字合并M
9、OV B,#00AHMUL ABADD A,R5MOV R4,Ajia: CJNE R3,#00AH,jianMOV A,R1ADD A,R4LJMP JIEGUOjian: CJNE R3,#00BH,chengMOV A,R1SUBB A,R4LJMP JIEGUOcheng: CJNE R3,#00CH,CHUMOV A,R1MOV B,R4MUL ABLJMP JIEGUOCHU: MOV A,R1MOV B,R4DIV ABJIEGUO: MOV B,#064H ;对结果的百位、十位、个位的数字进行处理以便单独输出DIV ABMOV R1,AMOV A,BMOV B,#00AHDIV
10、 ABMOV R2,AMOV A,BMOV R3,A 5MOV DPTR,#0CFE9H ;写显示 RAM 命令,输出百位MOV A,#83H ;选中 LED4MOVX DPTR,A MOV A,R1ANL A,#0FH ;取后半字节MOV DPTR,#TABMOVC A,A+DPTR ;取段显码MOV DPTR,#0CFE8H ;写显示 RAMMOVX DPTR,AMOV DPTR,#0CFE9H ;写显示 RAM 命令MOV DPTR,#0CFE9H ;写显示 RAM 命令,输出十位MOV A,#84H ;选中 LED5MOVX DPTR,A MOV A,R2ANL A,#0FH ;取后半
11、字节MOV DPTR,#TABMOVC A,A+DPTR ;取段显码MOV DPTR,#0CFE8H ;写显示 RAMMOVX DPTR,AMOV DPTR,#0CFE9H ;写显示 RAM 命令MOV DPTR,#0CFE9H ;写显示 RAM 命令,输出个位MOV A,#85H ;选中 LED6MOVX DPTR,A MOV A,R3ANL A,#0FH ;取后半字节MOV DPTR,#TABMOVC A,A+DPTR ;取段显码MOV DPTR,#0CFE8H ;写显示 RAMMOVX DPTR,AMOV DPTR,#0CFE9H ;写显示 RAM 命令MOV R7,#000HMOV D
12、PTR,#0CFE9H ;写显示 RAM 命令,输出个位MOV A,#80H ;选中 LED1MOVX DPTR,A MOV A,R7ANL A,#0FH ;取后半字节MOV DPTR,#TABMOVC A,A+DPTR ;取段显码MOV DPTR,#0CFE8H ;写显示 RAMMOVX DPTR,AMOV DPTR,#0CFE9H ;写显示 RAM 命令MOV DPTR,#0CFE9H ;写显示 RAM 命令,输出个位MOV A,#81H ;选中 LED2MOVX DPTR,A 6MOV A,R7ANL A,#0FH ;取后半字节MOV DPTR,#TABMOVC A,A+DPTR ;取段
13、显码MOV DPTR,#0CFE8H ;写显示 RAMMOVX DPTR,AMOV DPTR,#0CFE9H ;写显示 RAM 命令MOV DPTR,#0CFE9H ;写显示 RAM 命令,输出个位MOV A,#82H ;选中 LED3MOVX DPTR,A MOV A,R7ANL A,#0FH ;取后半字节MOV DPTR,#TABMOVC A,A+DPTR ;取段显码MOV DPTR,#0CFE8H ;写显示 RAMMOVX DPTR,AMOV DPTR,#0CFE9H ;写显示 RAM 命令LJMP LOOP1TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;段显码表db 7fh,6fh,77h,7ch,39h,5eh,79h,71hEND