AT89C51单片机用4位数码管做秒表,要求用动态扫描做,汇编语言
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++;...
豫魏施泰: #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...