用汇编语言写一程序,利用定时计数器,定时一秒,一个数码管秒个位加1,同时有八个LED灯在循环流动。

供稿:hz-xin.com     日期:2025-01-13
用汇编语言写一程序,利用定时计数器,定时一秒,一个数码管秒个位加1,同时有八个LED灯在循环流动。

ORG 0000H
LJMP BEGIN
ORG 000BH
LJMP T0ISR
ORG 0030H
;---------------------------------------
BEGIN:
MOV SP,#5FH
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV A,#0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
SETB TR0
SETB ET0
SETB EA
MOV R2,#0
MOV R4,#0
MOV R7,#0
SJMP $
T0ISR:
CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
INC R7
CJNE R7,#10,T01
T01:
JC T0E
MOV R7,#0
INC R2
INC R4
CJNE R2,#10,T02
T02:
JC LP
MOV R2,#0
LP:
MOV A,R2
MOV DPTR,#TABLE
MOVC A,@A+DPTR ;找到相应位显示代码
MOV P1,A
CJNE R4,#9,T03
T03:
JC LEDDIS
MOV R4,#1
LEDDIS:
MOV A,#0FFH
CLR C
PUSH 04H
LEDDIS1:
RLC A
DJNZ R4,LEDDIS1
MOV P0,A
POP 04H
T0E:
RETI
TABLE: ; 共阴极数码管显示代码表
DB 3FH,06H,5BH,4FH,66H ;01234
DB 6DH,7DH,07H,7FH,6fh ;56789
END

共阳数码管中断程序:
#include
#define uint unsigned int
#define uchar unsigned char
uchar code table[]=
{
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x83,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uint num,a;
uchar bai,shi,ge;
void init();
void delay(uint);
void display(ucharbai,ucharshi,ucharge);
uint fb();
uint fs();
uint fg();
void main()
{
init();
while(1)
{
display(fb(),fs(),fg());
}
}
void init()
{
num=0;
a=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void display(ucharbai,ucharshi,ucharge)
{
P1=0xfd;
P0=table[bai];
delay(1);
P1=0xfb;
P0=table[shi];
delay(1);
P1=0xf7;
P0=table[ge];
delay(1);
}
void timeoff() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65526-50000)%256;
a++;
if(a%20==0)
{
num++;
if(num==999)
{
num=0;
}
}
}void delay(uint z){
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uint fb()
{
bai=num/100;
return bai;
}
uint fs()
{
shi=num%100/10;
return shi;
}
uint fg()
{
ge =num%100%10;
return ge;
}

扩展资料
2个可编程定时/计数器·5个中断源,2个优先级(52有6个)
一个全双工串行通信口
外部数据存储器寻址空间为64kB
外部程序存储器寻址空间为64kB
逻辑操作位寻址功能·双列直插40PinDIP封装
单一+5V电源供电
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:用以存放程序、一些原始数据和表格;
I/O口:四个8位并行I/O口,既可用作输入,也可用作输出
T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。
参考资料来源:百度百科-51单片机


;定时器定时一秒,一个数码管秒个位加1,同时八个LED灯循环流动


很简单的题目,只能写很简单的程序:


    ORG   0000H

    JMP   START

    ORG   000BH

    INC   R2

    RETI

START:

    SETB  TR0

    MOV   IE, #82H

    MOV   R3, #127

LP: MOV   R4, #0

DP: MOV   A, R4

    MOV   DPTR, #TAB

    MOVC  A, @A + DPTR

    MOV   P3, A

    MOV   P0, R3

    MOV   A, R3

    RR    A

    MOV   R3, A

    CJNE  R2, #122, $  ;定时 999424us

    MOV   R2, #0

    INC   R4

    CJNE  R4, #10, DP

    JMP   LP

TAB: 

    DB   0C0H,0F9H,0A4H,0B0H, 99H   

    DB   92H, 82H, 0F8H, 80H, 90H   

END



     ORG   0000H

     LJMP   BEGIN

ORG   000BH

LJMP T0ISR

     ORG 0030H

;---------------------------------------

BEGIN:

MOV SP,#5FH  

MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0B0H

MOV A,#0

MOV   DPTR,#TABLE

    MOVC  A,@A+DPTR

    MOV   P1,A

SETB TR0

SETB ET0

SETB EA

MOV R2,#0

MOV R4,#0

MOV R7,#0

SJMP $

T0ISR:

CLR TR0

MOV TH0,#3CH

MOV TL0,#0B0H

SETB TR0

INC R7

CJNE R7,#10,T01

T01:

JC T0E

MOV R7,#0

INC R2

    INC R4

CJNE R2,#10,T02

T02:

JC LP

MOV R2,#0

LP: 

MOV A,R2

MOV   DPTR,#TABLE

    MOVC  A,@A+DPTR  ;找到相应位显示代码

    MOV   P1,A

CJNE R4,#9,T03

T03:

JC LEDDIS

MOV R4,#1

LEDDIS:

    MOV A,#0FFH

    CLR C

PUSH 04H

LEDDIS1:

RLC A

    DJNZ R4,LEDDIS1

    MOV P0,A

POP 04H

T0E:

RETI

TABLE:      ; 共阴极数码管显示代码表

          DB    3FH,06H,5BH,4FH,66H ;01234

          DB    6DH,7DH,07H,7FH,6fh ;56789

    END  



...器\/计数器C\/T0工作于方式1定时1ms?求用汇编语言编程,谢谢。_百度...
1ms定时程序初始化为:MOV TMOD,#01H MOV TH0,#HIGH(65536-1000)MOV TL0,#LOW(65536-1000)SETB TR0 SETB ET0 SETB EA

利用定时器\/计数器1数脉冲,得到的脉冲数以二进制的形式在8盏LED发光...
;8 位计数。TL1溢出时TH1内容自动装到TL1 SETB TR1 ;开定时器1 MAIN1: MOV P1,TL1 ;脉冲数送P1口显示 AJMP MAIN1 END 图中按 了6次按键 ,表示6 个脉冲。 向左转|向右转 本回答由提问者推荐 举报| 答案纠错 | 评论(3) 0 0 47okey 采纳率:43% 擅长: 照相机\/摄像机 汇编语言 C\/C++ 其他...

单片机试题求解答 用定时计数器产生周期为10ms的方波,由p1.1输出, 使 ...
ORG 0000H MOV TMOD, #01H SETB TR0LP: MOV TH0, #(65536 - 5000) \/ 256 MOV TL0, #(65536 - 5000) MOD 256 JNB TF0, $ CLR TF0 CPL P1.1 SJMP LPEND本程序已经实验,完全满足题目要求。本程序,是最简短的,占用资源,也是最少...

单片机延时的方法有哪些?
单片机常用的编程语言有汇编语言、C语言等。以下是使用汇编语言实现延时1s的程序:以上程序中,使用了一个8位计数器来实现延时功能。由于单片机晶振频率为12MHz,每个指令需要执行12\/4=3个机器周期(其中4代表指令周期),因此可以通过调整计数器初值来实现不同的延时时间。具体计算过程如下:每个指令需要执行...

利用定时\/计数器T0众P1.0输出周期为1s,脉宽为20ms有正脉冲信号,晶振频 ...
给你一个直接的思路:定时器0控制p1.0输出20毫秒高电平,接着输出980毫秒低电平。然后循环。

用汇编语言编写一个时钟程序,在微机屏幕上显示当前时间的时、分、秒...
AlarmTimeOn equ 20h.2; 此位为1时表示闹时时间到DataMode equ 20h.3DispHour equ 21h; 设置小时显示寄存器的地址DispMinute equ 22h; 设置分钟显示寄存器的地址DispSecond equ 23h; 设置秒显示寄存器的地址Dnum equ 24hAlarmHour equ 2eh; 设置闹时小时计数器的地址AlarmMinute equ 2fh; 设置闹时分钟计数器...

8051单片机的汇编程序编程问题!!!
既然向我求助,那我就写一下大概的思路和C语言程序,至于汇编语言,兄弟可自己由C语言翻译,我今天的确没太有时间.周期为2个ms的方波,也就是说半个周期为1ms,也就是说,P1.2每1ms翻转一次;同理,P1.3每3.5ms翻转一次,因为只能用一个定时器,所以,取1ms和3.5ms的最大公约数,是0.5ms,也就是说,...

...是11.0592MHz,利用定时器1采用方式1定时20ms,写出初值
定时\/计数器T1定时10ms,选择对系统时钟的12分频模式,T1x12位为0,Tc=10ms,fosc=12MHz,可知计数次数N=10000,选择方式1。初值X=216-10000=55536=D8F0H,则TH1=D8H,TL1=F0H。(1)汇编程序:ORG 0000H LJMP MAIN ORG001BH ;T1的中断向量入口地址 LJMPT1_INT ORG0100H MAIN:MOVSP,#0...

汇编程序 单片机我想用T0定时器定时1s,用T1计数器来计算1s时间内的方波...
CNTH EQU 30H CNTL EQU 31H ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#51H MOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)MOV TH1,#0 MOV TL1,#0 SETB TR0 SETB TR1 SETB ET0 SETB EA MOV R2,#20 SJMP T0ISR:CLR TR0 MOV TH0,#HIGH(...

用单片机定时计数器值p1.0端口上产生一个10khz的方波。
汇编程序如下(晶振12MHz):ORG 0000H LJMP MAIN ORG 000BH ;T0中断入口地址 CPL P1.0 RETI ORG 0100H MAIN:MOV IE,#82H;允许T0中断 MOV TMOD,#02;T0方式1定时 MOV TH0,#0CEH MOV TL0,#0CEH SETB TR0 SJMP END C语言程序如下:include <reg51.h> sbit P10=P1...