ORG 00H ;
SJMP STAR ;
ORG 1BH;
SJMP TIS; 转T1中断服务程序
ORG 30H;
STAR: MOV R2,#60H; 倒计时初值
MOV R4,#20H; 定时中断溢出计数器
MOV IE,#88H; 开中断
MOV TMOD,#10H;
MOV TH1,#3CH; 定时初值
MOV TL1,#0B0H; 定时初值
SETB TR1; 启动
ACALL DIS; 调用显示子程序
SJMP $;
TIS: MOV TH1,#3CH;
MOV TL1,#0B0H;
DJNZ R4,T1S1; 定时1S到否
MOV R4,#20; 到1S,重置R4=20
DJNZ R2,T1S0; 倒计时递减
CLR TR1; 倒计时结束,关定时器
T1S0: ACALL DIS; 调显示
T1S1: RETI ; 中断返回
SEG7: INC A; A的值加一
MOVC A,@A+PC; 取显示断段
RET; ;
DB 0C0H,0F9H,0A4H,0B0H; ; 0至3的共阳型显示码
DB 99H,92H,82H,0F8H;; 4至7的共阳型显示码
DB 80H,90H,88H,83H; 8至B的共阳型显示码
DB 0C6H,0A1H,86H,8EH;; C至F的共阳型显示码
DIS: MOV A,R2; ; 单字节十六进制数转为十进制数
MOV B,#10 ;
DIV AB ;
ACALL SEG7 ;
MOV P1,A; ; 显示十位
MOV A,B;;
ACALL SEG7;;
MOV P2,A; ; 显示个位
RET; ; 子程序返回
END ;
追问有c语言的程序吗?这个看不懂,不好意思了