Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
proteus.asm
Package: proteus.rar [view]
Upload User: cyl1202
Upload Date: 2020-01-10
Package Size: 2k
Code Size: 3k
Category:
SCM
Development Platform:
DOS
- MS EQU 7FH ;50ms定时计数单元
- BUFF DATA 40H ; BUFF~BUFF+5存放计数值BCD码,BUFF最
- ;低位
- THH EQU 51H ;脉冲计数值(二进制)高位地址单元
- TLL EQU 50H ;脉冲计数值(二进制)低位地址单元
- BTOD EQU 60H ;计数值BCD码的首地址,BTOD单元保存最低
- ;字节,BTOD+2单元保存最高位
- BINA EQU 70H ;脉冲计数值(二进制)地址单元,BINA保存低
- ;位,BINA+1 保存高位
- INTF0 BIT 20H.0 ;秒计时到标志
- ORG 0000H
- LJMP START ;转到开始程序入口
- ORG 000BH
- LJMP INT0S ;转到T0中断程序入口
- START: MOV MS,#20 ;软计数初值
- MOV TMOD,#51H ;T0定时、T1计数模式,工作方式1
- MOV TH0,#3CH ;T0定时初值,(晶振频率12MHz,定时50ms)
- MOV TL0,#0B0H
- MOV TH1,#0 ;计数值从0开始
- MOV TL1,#0
- SETB TR0 ;启动T0
- SETB TR1 ;启动T1
- MOV SP,#30H
- SETB EA ;允许T0中断
- SETB ET0
- MAIN: JBC INTF0,CONVT ;判断秒计时到否?秒计时到转CONVT
- LCALL DISP
- SETB EA
- LJMP MAIN
- CONVT: NOP
- MOV BINA,TLL
- MOV BINA+1,THH
- LCALL B2BCD
- LCALL SLIP
- LJMP MAIN
- B2BCD: CLR A ;二进制数转换BCD码程序
- MOV R0,#BTOD ;BTOD~BTOD+2单元清0
- MOV R1,#03H
- D0: MOV @R0,A
- INC R0
- DJNZ R1,D0
- MOV R6,#10H ;二进制位数存于R6中
- D1: MOV R0,#BINA ;BINA~BINA+1单元二进制数左移一位
- ;后存入原单元中
- MOV R1,#02H
- D2: MOV A,@R0
- RLC A
- MOV @R0,A
- INC R0
- DJNZ R1,D2
- MOV R0,#BTOD ;BTOD~BTOD+2结果单元内容乘2+Cy并进行
- ;调整后存入原单元
- MOV R1,#03H
- D3: MOV A,@R0
- ADDC A,@R0
- DA A
- MOV @R0,A
- INC R0
- DJNZ R1,D3
- DJNZ R6,D1 ;外循环直到全部处理完毕
- RET
- SLIP: MOV R0,#BTOD ;显示数据送到显示缓冲区中,最低位数据在
- ;BUFF单
- ;元,最高位显示数据在BUFF+5单元
- MOV R1,#BUFF ;显示缓冲区首地址
- MOV R2,#03H ;分离次数
- SLIP1: MOV A,@R0 ;取显示数据
- ANL A,#0FH ;将压缩BCD码低4位送到指定显示缓冲区存储
- ;单元中
- MOV @R1,A
- INC R1 ;调整显示缓冲区地址
- MOV A,@R0
- ANL A,#0F0H ;将压缩BCD码低4位送到指定显示缓冲区存储
- ;单元中
- SWAP A
- MOV @R1,A
- INC R1 ;调整显示缓冲区地址
- INC R0 ;调整显示数据地址
- DJNZ R2,SLIP1
- RET
- DISP: MOV R0,#BUFF ;显示程序(动态显示,P0口显示码,P2口位
- ;码)
- MOV R2,#06H ;数码管位数
- MOV R3,#01H ;最右面数码管位码
- MOV DPTR,#TABLE ;表首地址
- DISP1: MOV A,R3
- MOV P2,A ;输出位码
- RL A ;调整位码
- MOV R3,A ;保存位码
- MOV A,@R0 ;取显示数值
- MOVC A,@A+DPTR ;查表得到相应显示码
- MOV P0,A ;输出显示码
- INC R0 ;调整显示缓冲区指针
- LCALL DELAY ;延时
- DJNZ R2,DISP1 ;判断6位是否显示完成?没完成转DISP1继续
- ;显示下一位
- RET
- TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
- ;0~9的共阴极显示码
- DELAY: MOV R7,#10 ;延时程序
- DELAY0:MOV R6,#100
- DELAY1:DJNZ R6,DELAY1
- DJNZ R7,DELAY0
- RET
- INT0S: MOV TH0,#3CH ;定时器0中断服务程序
- MOV TL0,#0B0H ;恢复定时初值
- DJNZ MS, T0END ;判断秒计时到否?
- MOV MS,#20 ;恢复软计数
- SETB INTF0 ;建立秒标志
- MOV THH,TH1 ;读T1计数值
- MOV TLL,TL1
- MOV TH1,#00H ;T1计数初值
- MOV TL1,#00H
- T0END: RETI
- END