?? 99koujue.asm
字號:
;********************************************************************************
;* 描述: 乘法口訣演示 *
;* K1--- 模擬出題控制開關(guān), 接p1.4口,數(shù)碼管數(shù)據(jù) p0口,數(shù)碼管控制p2口 *
;* 第6位數(shù)碼管顯示被乘數(shù),第4位數(shù)碼管顯示乘數(shù)。 *
;* 第1、2位數(shù)碼管顯示乘積。 *
;********************************************************************************
;* 日期: 2007-3-25 *
;* 版本: 3.0 *
;* 作者: 深圳學林電子有限公司 專業(yè)8051單片機教學站 *
;* 郵箱: sxj1974@163.com *
;* 網(wǎng)站: http://www.51c51.com http://www.8951.com 更多例程請登陸網(wǎng)站 *
;********************************************************************************
;* 硬件:此程序在本公司xlisp系列單片機實驗儀運行通過 *
;********************************************************************************
;* 【版權(quán)】 Copyright(C)深圳學林電子有限公司 www.51c51.com All Rights Reserved *
;* 【聲明】 此程序僅用于學習與參考,引用請注明版權(quán)和作者信息! *
;********************************************************************************
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設(shè)置為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 ;發(fā)現(xiàn)按下按鍵,停止T1運行。
MOV A,TL1 ;取T1的當前值。
CPL A ;取反得到對應的題號。
MOV B,#9 ;就題目分成9組。
DIV AB
INC A ;將組號0~8轉(zhuǎn)換為被乘數(shù)1~9。
MOV TEMP+5,A ;保存被乘數(shù)。
INC B ;將組號0~8轉(zhuǎn)換為乘數(shù)1~9。
MOV TEMP+3,B ;保存乘數(shù)。
MUL AB ;計算乘積
MOV B,#10
DIV AB
MOV TEMP+1,A
MOV TEMP,B
SETB TR1
RET
;**********************************************************
; 數(shù)碼管顯示子程序
;**********************************************************
DISP:
MOV R0,#TEMP ;獲得顯示單元首地址
MOV R1,#07FH ;從第一個數(shù)碼管開始
MOV R2,#06 ;共顯示3位數(shù)碼管
DISP1:
MOV A,@R0 ;獲得當前位地址
MOV DPTR,#TAB_NU ;獲得表頭
MOVC A,@A+DPTR ;查表獲得顯示數(shù)據(jù)
MOV P0,A ;顯示數(shù)據(jù)
MOV P2,R1 ;開始顯示當前位
MOV A,R1 ;準備顯示下一位
RR A
MOV R1,A ;下一位
INC R0 ;取下一個單元地址
LCALL DELAY2MS ;延時 2 MS
DJNZ R2,DISP1 ;重復顯示下一個
MOV P2,#0FFH ;關(guān)閉顯示
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 + -