- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
ScanDisp.asm
资源名称:shumaguan.rar [点击查看]
上传用户:cnlazy
上传日期:2021-04-25
资源大小:163k
文件大小:1k
源码类别:
单片机开发
开发平台:
DOS
- ;要求将R5中的值显示在二个数码管上 并且R5中的值小于等于99
- ;编程思路: 有两个数码管 用30H、31H作显示缓存 30H存个位 31H存十位 R5中的值为一个二进制的值,将其转化为
- ;BCD码显示在两个二极管上
- ORG 0000H
- AJMP Main
- Main: MOV SP,#60H
- MOV R5,#53H
- LOOP: CLR P1.0
- CALL DispProtec
- CALL Disp
- CALL DELAY
- SETB P1.0
- CALL DELAY
- AJMP LOOP
- DispProtec: MOV A,R5
- MOV B,#10
- DIV AB
- MOV 31H,A ;十位存入31H
- MOV A,B
- MOV 30H,A ;个位存入30H
- RET
- DELAY: MOV R7,#0DH
- DE10: MOV R6,#0FFH
- DE01: DJNZ R6,DE01
- DJNZ R7,DE10
- RET
- Disp: MOV DPTR,#TAB1 ;DPTR指向7段数码显示的译码表(亦即段选)
- MOV A,@R0 ;R0为显示缓存单元指针,初始值指向个位的30H,个位显示后 加1指向下一位,当R1超过33H后又回到30H
- MOVC A,@A+DPTR
- MOV P0,#0
- MOV P0,A
- MOV DPTR,#TAB2 ;DPTR指向位选表
- MOV A,R0 ;A中的值为当前要显示的缓存地址,由于缓存地址从30H开始,如果A减去30H,就得到当前正显示的是个、十、百、千中的哪一位
- CLR CY ;因为带借位减 CY清0
- SUBB A,#30H
- MOVC A,@A+DPTR
- MOV P2,A
- INC R0 ;显示下一位
- CJNE R0,#32H,Over
- MOV R0,#30H
- Over: RET
- TAB1: DB 3FH,06H,5BH,4FH,66H ,6DH ,7DH ,07H ,7FH ,6FH ,77H,7CH,39H,5EH,79H,71H
- TAB2: DB 0FDH,0FEH
- END