分别用汇编语言和C语言设计: 采用中断方式,利用定时器进行0-9秒表计数器的设计,并用数码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分别用汇编语言和C语言设计: 采用中断方式,利用定时器进行0-9秒表计数器的设计,并用数码相关的知识,希望对你有一定的参考价值。
分别用汇编语言和C语言设计:
采用中断方式,利用定时器进行0-9秒表计数器的设计,并用数码管显示。
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW((65536-50000)
SETB TR0
SETB ET0
SETB EA
MOV R0,#0
MOV R2,#0
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW((65536-50000)
SETB TR0
INC R0
CJNE R0,#20,T0E
INC R2
CJNE R2,#10,T001
MOV R2,#0
T001:
MOV A,R2
MOV DPTR,#TABLE
MOV A,@A+DPTR
MOV P0,A
T0E:
RETI
TABLE: ; 共阴极数码管显示代码表
DB 3FH,06H,5BH,4FH,66H ;01234
DB 6DH,7DH,07H,7FH,6fh ;56789
END
#include<reg51.h>
#define uchar unsigned char
uchar table[]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f;
uchar num,dat;
void t0isr() interrupt 1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
if(num>=20)
num=0;
dat++;
dat%=10;
P0=table[dat];
main()
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
num=0;
dat=0;
while(1);
追问谢谢
追答呵呵,希望可以帮到你。
追问谢谢 能再帮我回答这个问题吗?简述中断系统的工作流程。
参考技术A ORG 00HAJMP MAINORG 0BHAJMP T0INTORG 30H ;主程序开始地址MAIN: MOV R4,#20MOV DPTR,#TABMOV TMOD,#01HMOV TH0,#03CH ;12M晶振时定时初值取#3CB0H MOV TL0,#0B0H SETB ET0SETB EASETB TR0DISP:MOV A,R0MOVC A,@A+DPTRMOV P0,AAJMP DISP T0INT: MOV TH0,#03CH;定时中断子程序。重装定时常数MOV TL0,#0B0H;DJNZ R4,RTI ;50msX20=1S,未满20次,跳出中断子程序MOV R4,#20INC R0CJNE R0,#10,RTIMOV R0,#0 RTI: RETITAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;显示码表,共阴
END
#include <reg51.h>#define uchar unsigned char#define uint unsigned intuchar time,num;uchar code tab[ ]= 0x3F,/*0*/ 0x06,/*1*/ 0x5B,/*2*/ 0x4F,/*3*/ 0x66,/*4*/ 0x6D,/*5*/ 0x7D,/*6*/ 0x07,/*7*/ 0x7F,/*8*/ 0x6F,/*9*/ ; void display();
void T0intinit( ) //定时器T0初始化 TMOD=0x01; TH0=(65536-50000)/256; //50ms定时 TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1;
void main() T0intinit( ); while(1) display( );
void display( ) P0=tab[num];
void T0int( ) interrupt 1 //定时器T0中断 方式1 TH0=(65536-50000)/256; //重装10ms定时常数 TL0=(65536-50000)%256; time++; if(time==20) time=0; num++; if(num==10) num=0; 追问
中文需要写上去吗?
追答中文没事,前面有个分号。分号后面的是注释,不影响程序的。
参考技术B 秒表是秒表,计数器是计数器。你到底需要什么呢?
一般不会是两个的。。。
以上是关于分别用汇编语言和C语言设计: 采用中断方式,利用定时器进行0-9秒表计数器的设计,并用数码的主要内容,如果未能解决你的问题,请参考以下文章
c语言:请编程序将“China”译成密码,分别用putchar和printf函数输出这5个字符。