AT89C51单片机用4位数码管做秒表,要求用动态扫描做,汇编语言

作者&投稿:貂雨 (若有异议请与网页底部的电邮联系)
谁能发一个AT89C51单片机用4位数码管做秒表,汇编语言邮箱892413881@qq.com~

4 位显示,最低位是多少的?10ms还是s?
先给你个前者的
STRT EQU P1.0
CLRR EQU P1.1

ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT0
ORG 30H
MAIN:
MOV SP,#60H
MOV R4,#20
MOV TMOD,#01H
MOV TH0,#3CH;12M晶振时定时初值取#3CB0H,还可细调如 TL=#0B7H,可以更准
MOV TL0,#0B0H
SETB ET0
SETB EA
k1:
ACALL DISP ;开始/暂停键
JB STRT,K2
ACALL DISP
JNB STRT,$-2
CPL TR0
AJMP K1
K2:
JB CLRR,K1
ACALL DISP
JNB CLRR,$-2
MOV A,#0
CLR TR0
MOV 26H,A
MOV 27H,A
MOV 28H,A
AJMP K2
DISP:
MOV A,26H
MOV B,#10
DIV AB
MOV 20H,B ;余数(百分秒位数)
MOV 21H,A ;商(十分秒位数)
MOV A,27H
MOV B,#10
DIV AB
MOV 22H,B ;余数(秒个位数)
MOV 23H,A ;商(秒十位数)
MOV A,28H
MOV B,#10
DIV AB
MOV 24H,B ;余数(分个位数)
MOV 25H,A ;商(分十位数)

MOV A,20H ;百分秒?
ACALL SEG7
MOV P0,A
CLR P2.3
ACALL DLY
SETB P2.3
MOV A,21H ;十分秒
ACALL SEG7
MOV P0,A
CLR P2.2
ACALL DLY
SETB P2.2
DISP1:
MOV A,22H ;秒个位
ACALL SEG7
MOV P0,A
SETB P0.7
CLR P2.1
ACALL DLY
SETB P2.1
MOV A,23H ;秒十位
ACALL SEG7
MOV P0,A
CLR P2.0
ACALL DLY
SETB P2.0
RET

T0INT0:
MOV TH0,#3CH; ;定时中断子程序。重装定时常数
MOV TL0,#0B0H;

INC 26H ;0.01S秒存储单元内数+1
MOV A,26H
CJNE A,#100,T0INTR ;未1S,跳出中断。
MOV 26H,#0
INC 27H ;秒+1
CPL 7FH
MOV A,27H
CJNE A,#60,T0INTR
MOV 27H,#0
T0INTR:
RETI
DLY10:
MOV R3,#30
D0:
ACALL DLY
DJNZ R3,D0
RET
DLY:
MOV R7,#2
D1:
MOV R6,#40
DJNZ R6,$
DJNZ R7,D1
RET
SEG7:
INC A
MOVC A,@A+PC
RET
DB 03FH ;0 共阴
DB 006H ;1
DB 05BH ;2
DB 04FH ;3
DB 066H ;4
DB 06DH ;5
DB 07DH ;6
DB 007H ;7
DB 07FH ;8
DB 06FH ;9
END

1.要求从0-60秒计时,到60后LED发光,当从新计时是LED熄灭。
--60,保持不变?
--何时重新计时?

2.用定时计数器定时,用按键控制启停。
--刚开机时,是启动,还是停止?

3.若启动后计时没到60秒,按键停止后,则重新计时。
--按键停止后,立即就重新计时?
--是不是保持显示,等待再次按键,再重新计时?
--否则,按键的作用,就不是停止了,而是重新计时了。

4.要求用汇编语言
--这个可以办到。

重赏之下心有勇夫^_^   

;汇编时钟程序。4位共阳管。P0口段码,P2.0~P2.3位码。显示毫秒和秒。三个按键一个控制时钟开始走,一个控制暂停和继续。。。一个按键清0 

;12M晶振 2011 04 20 调试完成  

 STRT EQU P3.2

 STP EQU P3.3

 CLRR EQU P3.5    

 ORG 00H

 SJMP MAIN

 ORG 0BH

 AJMP T0INT

 ORG 30H 

MAIN: MOV  SP,#60H

 MOV R3,#10

 MOV R4,#20

 MOV TMOD,#01H ;定时器T0工作方式1

 MOV  TH0,#0D8H ;10MS定时初值

     MOV  TL0,#0F0H  

 SETB ET0

 SETB EA

 

k1: LCALL DISP 

 JB STRT,K2

 LCALL DISP

 JNB STRT,$-3

 AJMP START

k2: LCALL DISP

 JB STP,K3  

 LCALL DISP

 JNB STP,$-3

 AJMP SS

K3: LCALL  DISP  

 JB CLRR,K1

 LCALL DISP

 JNB CLRR,$-3 

 AJMP CLEAR

START: SETB TR0

 CLR F0  ;如无此条,暂停后,不是按继续键,而是按开始键继续走时,下次按暂停键时,不能暂停

 AJMP K1

 

SS: CPL F0

 JNB F0,START

 

STOP: CLR TR0

 AJMP K2         

CLEAR: CLR     TR0  

 MOV A,#0

 MOV 20H,A  

 MOV 21H,A  

 MOV 22H,A  

 MOV 23H,A  

 MOV 24H,A  

 MOV 25H,A  

 AJMP K3

DISP: MOV A,24H

 MOV B,#10

 DIV AB

 MOV 20H,B  ;余数(MS个位数)

 MOV 21H,A  ;商(MS十位数)

 MOV A,25H

 MOV B,#10

 DIV AB

 MOV 22H,B  ;余数(S个位数)

 MOV 23H,A  ;商(S十位数)

 MOV A,20H  ;MS个位

 ACALL SEG7

 MOV P0,A

 SETB P2.4

 ACALL DLY

 CLR P2.4

 MOV A,21H  ;MS十位

 ACALL SEG7 

 MOV P0,A

 SETB P2.5

 ACALL DLY

 CLR P2.5

 MOV A,22H  ;S个位

 ACALL SEG7

 MOV P0,A

 CLR P0.7

 SETB P2.6

 ACALL DLY

 CLR P2.6

 MOV A,23H  ;S十位

 ACALL SEG7

 MOV P0,A

 SETB P2.7

 ACALL DLY

 CLR P2.7

 RET 

T0INT: MOV  TH0,#0D8H

     MOV  TL0,#0F0H

 INC 24H

 MOV A,24H

 CJNE A,#99,T0INTR

 MOV 24H,#0

 INC 25H

 MOV A,25H

 CJNE A,#60,T0INTR

 MOV 25H,#0

   

T0INTR: RETI

DLY: MOV R7,#10

D1: MOV R6,#50

 DJNZ R6,$

 DJNZ R7,D1

 RET

SEG7: INC A

 MOVC A,@A+PC

 RET

     DB        0C0H;0

        DB        0F9H;1

        DB        0A4H;2

        DB        0B0H;3

        DB        099H;4

        DB        092H;5

        DB        082H;6

        DB        0F8H;7

        DB        080H;8

        DB        090H;9

 END



4位数码管动态扫描的电路,并编程实现6位数码管同时显示"135。

STRT EQU P1.0

CLRR EQU P1.1

ORG 00H

AJMP MAIN

ORG 0BH

AJMP T0INT0

ORG 30H

MAIN:

MOV SP,#60H

MOV R4,#20

MOV TMOD,#01H

MOV TH0,#3CH;12M晶振时定时初值取#3CB0H,还可细调如 TL=#0B7H,可以更准

MOV TL0,#0B0H

SETB ET0

SETB EA

扩展资料:

比起机器语言,汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。汇编语言仍是面向机器的语言,很难从其代码上理解程序设计意图,设计出来的程序不易被移植,故不像其他大多数的高级计算机语言一样被广泛应用。所以在高级语言高度发展的今天,它通常被用在底层,通常是程序优化或硬件操作的场合。 

参考资料来源:百度百科-汇编语言



呵呵,刚刚把工程文件发给你了。

代码的话,自己好好读一读,其实很简单的。




求大佬教教怎么用89c51单片机实现模拟路灯
1. 准备材料:89c51单片机、LED灯、电阻、面包板、杜邦线等。2. 连接电路:将89c51单片机与LED灯连接起来。将LED的正极连接到单片机的一个IO口,将LED的负极通过一个适当大小的电阻连接到单片机的地线。3. 编写程序:使用C语言编写程序,通过控制IO口的高低电平来控制LED灯的亮灭。以下是一个简单的示例...

帮帮忙 那为高手能不能把89C51单片机介绍一下!
89C51用户系统 CPU为Atmel公司生产的89C51\/89C52\/89C55等。出厂所配晶振频率 为11.0592MH,每个机器周期为1.085us,用户更换晶振以提高速度。存贮器为64K,前4K\/8K20K在CPU内部,其它程序在EPR0M27512中。数据存贮器为32K(62256),地址为8000—FFFFH。Ⅰ\/O扩展8155,片内RAM地址∶200O-20FFH 8155命令口...

89C51单片机的时钟周期与振荡周期之间有什么关系?一个机器周期的时序如...
时钟周期一个时钟脉冲所需要的时间。在计算机组成原理中又叫T周期或节拍脉冲。是CPU和其他单片机的基本时间单位。它可以表示为时钟晶振频率(1秒钟的时钟脉冲数)的倒数。时钟周期是单片机的基本时间单位,两个振荡周期(时钟周期)组成一个状态周期,若时钟晶振的振荡频率为fosc,则时钟周期Tosc=1\/fosc(即为...

用89C51单片机设计多功能低频函数信号发生器,能产生方波、正弦波、三角...
利用89C51单片机设计多功能低频函数信号发生器,能产生方波、正弦波、三角波等信号波形,信号的频率、幅度可变。绘制多功能低频函数信号发生器的硬件电路的原理图;绘制程序流程图。并编写主要模块的程序。万分感激啊。急用,望高人帮忙啊。lianghua85228 | 浏览13179 次 |举报 我有更好的答案推荐于2017-12-15 15:36:18...

89C51单片机计数器受CPU中断影响吗
计数不影响 单片机内部有计数器,自己会计数,所以不用CPU来计数 只有计数器计数满了之后,会产生中断信号通知CPU处理中断程序

stc89c51单片机,在使用12mhz晶核的情况下,一个机器周期为多长时间?若...
89C51单片机,12T模式机器周期,即机器周期 T=12\/Fosc=12\/12MHz=1us;12C5A60S2 的机器周期 固定为 1T模式,即 机器周期 T=1\/Fosc=1\/12MHz=1\/12 us;速度是 89C51 的12倍。

求用C语言编写一个单片机89C51电子时钟程序,有时,分,秒,还有电路图_百 ...
\/* 地址,命令 *\/ RTInputByte(ucDa); \/* 写1Byte数据*\/ T_CLK = 1; T_RST = 0;}\/*** 函 数 名:R1302()功 能:读取DS1302某地址的数据说 明:先写地址,后读命令\/数据 (内部函数)调 用:RTInputByte() , RTOutputByte()入口参数:ucAddr: DS1302地址返...

89C51单片机定时器初值怎么计算
在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,即对机器周期进行计数。若选择12M晶振,则定时器的计数频率为1MHZ。假设定时时间为T,机器周期为T1,即12\/晶振频率。X为定时器初值。则 X=2^n-T\/T1。方式0,n=13,方式1时,n=16,方式2和方式3,n=8 ...

89C51单片机 电子密码锁 汇编程序求解
T0_T: POP ACCRETIPASS_READ:CALL EEPRRETMOV COUN1,#06H ;6位密码数值MOV R7,#00HMOV R1,#PASS_NEWP_READ: MOV A,R7MOV DPTR,#R_TABLEMOVC A,@A+DPTRMOV @R1,AINC R1INC R7DJNZ COUN1,P_READRETR_TABLE:DB 35H,36H,34H,34H,38H,38HCOMP_ERR:MOV DPTR,#COMP_ERR1 ;MOV A,#2 ;...

求89c51单片机制作简易电子琴的c程序及源代码
while(ms--) for (t=0;t<120;t++);}void delay(void){uchar i;for (i=300;i>0;i--);}void EX0_INT() interrupt 0{ FY=0; LED1=0; LED2=1; STL0=STL0;}void EX1_INT() interrupt 2{FY=1; LED1=1; LED2=0;LED3=1;LED4=1;LED5=1;P2=0xff; Tone_Index=-1;Tone_Index++;...

合江县19228777134: AT89C51单片机实现4位数码管显示学号后四位,谢谢 -
豫魏施泰: #include<reg52.h> #define uchar unsigned char #define uint unsigned int //共阴数码管七段码uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77}; uchar code table2[]={5,4,3,2};//这就是学号的后4位,自行修改 void ...

合江县19228777134: AT89C51单片机怎么用汇编语言让4个数码管同时显示1234? -
豫魏施泰: 1、首先我们先打开keil. 2、接着,我们要定义好库函数,void main(){while(1)//不断循环显示{dispaly();}}void dispaly(){P0=smg[1];//选择显示数字几,P1=0x7f;//控制是否点亮数码管. 3、接着,我们加上一条循环语句.delay(5);//显示5...

合江县19228777134: 如何使用单片机at89c51驱动4位8段数码管,如果用到芯片来驱动的,电路图如何连接? -
豫魏施泰: 看你将四位数码管接在单片机的哪一组输出口 例如51单片机一般都是四组八位输i/o口P0,P1,P2,P3口 一般P0口是三态i/o是要接上拉电阻的.其他接口是不用接上拉电阻的.上拉电阻一般选用1k~4k7都可以保证各管脚输出的电流小于500mA就可...

合江县19228777134: at89c51单片机实现LED数码管显示四位数,两个开关进行加和减.求硬件搭建图和C语言程序. -
豫魏施泰: 这个设计其实是很基础的一个小系统:最小系统、按键电路、LED驱动电路基本就可以满足你的要求了;如果打算每个数码管可调节,那么再加一个按键切换或者说移位;如果不想加按键数目,那么可以采用按键复用:长按,短按完成.

合江县19228777134: 用AT89C51单片机,4位共阴极数码管,显示出1234 程序怎么写?????? 请各位朋友帮忙!谢谢! -
豫魏施泰: MOV 31H,#01HMOV 32H,#02HMOV 33H,#03HMOV 34H,#04HMOV 35H,#05HMOV 36H,#06HACALL D0JMP $-2 D0: MOV R0,#31HMOV R2,#11111110BMOV DPTR,#TAB D1: ORL P1,#00111111BMOV A,@R0MOVC A,@A+...

合江县19228777134: 51单片机 控制四位数码管 汇编程序
豫魏施泰: 哦,,数码管 有共阳极,共阴极的,你是那一种 ;显示缓冲单元在72H—75H DISPLAY: MOV DPTR,#TAB CLR P3.3 MOV A,72H MOVC A,@A+DPTR LOP1:MOV P2,A LCALL DL1MS SETB P3.3 CLR P3.2 MOV A,73H MOVC A,@A+DPTR ...

合江县19228777134: AT89C51与四片74HC595跟四个数码管连接的显示程序怎么写啊?用C语言写的 -
豫魏施泰: #include <reg52.h> sbit SCK = P3^6; sbit RCK = P3^7; sbit DS = P1^3; uchar temp[10]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar table[4]; void delay(uint time) { while(time--); } void write_595a(uchar date) { uchar i; for(i = 0;i < 8;i+...

合江县19228777134: 求救,单片机at89c51 用四位七段数码管动态显示一个数字,怎么不行呢??? -
豫魏施泰: 1.仿真用的可能是CC共阴型数码管,你改成共阳(CA)试一试. 2.程序中0~9的译码应该段码是低电平点亮,针对的是CA数码管,所以位选应该是高电平才能点亮,a=0;b=0;c=0;d=1时点亮第一位,程序中a,b,c,d全都要取反.

合江县19228777134: 求单片机89C51数字钟的设计,要用C语言程序,四位数码管的.谢谢~~ -
豫魏施泰: P1口片选 P3口位选 P3.0对应最右边那个 P3.3对应最左边那个 数码管共阳四位 不显示小数点#include <reg52.h> typedef unsigned char uint8; typedef unsigned int uint16; uint8 number[]={0xFC,0x60,0xDA,0xF2,0x66, 0xB6,0xBE,0xE0,0xFE,0xF6};...

合江县19228777134: 各位帮帮忙咯、、、用AT89C51单片机,4位共阴极数码管,要求:数码管开始显示1234,设计两个按键,按加键数 -
豫魏施泰: 没时间写,给你一个参考吧.自己加一个按键检测,显示的数值改成自己设定#include#define uint unsigned int#define uchar unsigned char uchar temp,aa,bai,shi,ge; sbit dula=P2^6; sbit wela=P2^7; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网