⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 99koujue.asm

📁 基于51开发
💻 ASM
字号:
;********************************************************************************
;* 描述:  乘法口诀演示                                                         *
;*      K1--- 模拟出题控制开关, 接p1.4口,数码管数据 p0口,数码管控制p2口       *
;*      第6位数码管显示被乘数,第4位数码管显示乘数。                            *
;*      第1、2位数码管显示乘积。                                                *
;********************************************************************************
;*  日期:  2007-3-25                                                            *
;*  版本:  3.0                                                                  *
;*  作者:  深圳学林电子有限公司     专业8051单片机教学站                        *
;*  邮箱: sxj1974@163.com                                                       *
;*  网站: http://www.51c51.com     http://www.8951.com    更多例程请登陆网站   *
;********************************************************************************
;*  硬件:此程序在本公司xlisp系列单片机实验仪运行通过                           *
;********************************************************************************
;* 【版权】 Copyright(C)深圳学林电子有限公司 www.51c51.com  All Rights Reserved *
;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
;********************************************************************************
	 TEMP  EQU   40H
	 K1    BIT   P1.4
;**********************************************************
         ORG  0000H
         LJMP  MAIN
         ORG  0030H
;**********************************************************
MAIN:
         MOV  SP,#70H
         MOV  TEMP+0,#00H       ;初始化显存单元
         MOV  TEMP+1,#00H
	 MOV  TEMP+2,#0AH
	 MOV  TEMP+3,#00H
       	 MOV  TEMP+4,#0AH
	 MOV  TEMP+5,#00H
         MOV  TMOD,#20H	        ;将T1设置为8位自动重装工作方式。
         MOV  TH1,#175	        ;对T1进行预置。
         MOV  TL1,#175
         SETB  TR1		;启动T1。
MAIN1:
         JB  K1,MAIN3
         MOV  R5,#10            ;用显示程序作为键延时
MAIN2:
         CALL  DISP
         DJNZ  R5,MAIN2
	 JNB  K1,$
         CALL  RUBRIC
MAIN3:
         CALL  DISP
         LJMP  MAIN1
;**********************************************************
; 随机出题子程序
;**********************************************************
RUBRIC:
         CLR   TR1		;发现按下按键,停止T1运行。
         MOV   A,TL1		;取T1的当前值。
         CPL   A	        ;取反得到对应的题号。
         MOV   B,#9		;就题目分成9组。
         DIV   AB
         INC   A	        ;将组号0~8转换为被乘数1~9。
         MOV   TEMP+5,A		;保存被乘数。
         INC   B	        ;将组号0~8转换为乘数1~9。
         MOV   TEMP+3,B		;保存乘数。
         MUL  AB                ;计算乘积
         MOV  B,#10
	 DIV  AB
	 MOV  TEMP+1,A
	 MOV  TEMP,B
	 SETB  TR1
         RET
;**********************************************************
; 数码管显示子程序
;**********************************************************
DISP:
         MOV R0,#TEMP           ;获得显示单元首地址
         MOV R1,#07FH           ;从第一个数码管开始
         MOV R2,#06             ;共显示3位数码管
DISP1:
         MOV A,@R0              ;获得当前位地址
         MOV DPTR,#TAB_NU       ;获得表头
         MOVC A,@A+DPTR         ;查表获得显示数据
         MOV P0,A               ;显示数据
         MOV P2,R1              ;开始显示当前位
         MOV A,R1               ;准备显示下一位
         RR A
         MOV R1,A               ;下一位
         INC R0                 ;取下一个单元地址
         LCALL DELAY2MS         ;延时 2 MS
         DJNZ R2,DISP1          ;重复显示下一个
	 MOV  P2,#0FFH          ;关闭显示
         RET                    ;显示完成,返回
;**********************************************************
; 2ms延时子程序
;**********************************************************
DELAY2MS:
         MOV  R6,#10
DEL1:
         MOV  R7,#100
         DJNZ  R7,$
         DJNZ  R6,DEL1
         RET
;**********************************************************
TAB_NU:
    DB 28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H
;**********************************************************
         END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -