你的仿真图中的两位数码的阴极同时接地槐纤了,就会同时显示11,22,33,44........
必须要采用两位动态扫描的方式来显示才行的。
所以,你的仿真图和程序铅含仿都要修改。
仿真图如下:
程序如下:
DAT0 EQU 30H30H地址命名为DAT0
ORG 0000H
LJMP MAIN 主程序入口
ORG 0003H
LJMP EXINT0 中断0子程序
MAIN:
MOV SP,#6FH设定堆栈地址
SETB IT0T0采用负缘触发信号
SETB EX0开中断0
SETB EA开中断总开关
MOV DAT0,#0DAT0地址老返赋初始值0
LOOP:
CALL SEG7
SJMP LOOP循环等待
EXINT0:
MOV A,DAT0
ADD A,#1按十进制数加1
DA A
MOV DAT0,A
RETI
SEG7: 显示子程序
MOV DPTR,#DISPLAYTAB
MOV A,DAT0
ANL A,#0F0H取十位数
SWAP A
MOVC A,@A+DPTR
MOV P0,#0FEH
MOV P2,A 显示十位
ACALL DELAY 显示一位要延时
MOV A,DAT0
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,#0FDH
MOV P2,A 显示个位
ACALL DELAY 显示一位要延时
RET
DELAY: 延时子程序
MOV R7,#50
DER7:
MOV R6,#100
DJNZ R6,$
DJNZ R7,DER7
RET
DISPLAYTAB:
DB 3FH0 共阴
DB 06H 1
DB 5BH 2
DB 4FH 3
DB 66H 4
DB 6DH 5
DB 7DH 6
DB 07H 7
DB 7FH 8
DB 6FH 9
END
本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确。Code Segment
Assume CS:Code,DS:Code
Press_Key db7,13,10,10,'The complated. Press any key to exit...$'
------拿侍搏-------------------------------
Start: push cs
pop ds
push cs
pop es
xor cx,cx 计数器清零
Input: mov ah,1
int 21h
cmp al,'$'
jz Exit_Proc
cmp al,'0'
jb Input
cmp al,'9'
ja Input
inc cx 计数
jmp Input
-----------------------------消祥-------谈乱-
Exit_Proc: lea dx,Press_Key 提示 *** 作完成,按任意键结束程序
mov ah,9
int 21h
mov ah,1
int 21h
mov ah,4ch 结束程序
int 21h
Code ENDS
END Start 编译到此结束
1.以查询方式工作,每计满100个脉冲,则取反P1.0口线状态。
ORG 0000HMOV TMOD, #06H
MOV 伍野 TH0, #156
MOV TL0, #156
SETB TR0
LP: JNB TF0, LP
CPL P1.0
SJMP LP
END
2.以中断方式工作,每计腊橘耐满200个脉冲,则取反轮春P1.0口线状态。
ORG 0000HSJMP START
ORG 000BH
CPL P1.0
RETI
START:
MOV TMOD, #06H
MOV TH0, #56
MOV TL0, #56
SETB TR0
MOV IE, #82H
SJMP $
END
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)