求51单片机秒表汇编程序,有三个键的,分别作用为开始,停止,清零

作者&投稿:大炊 (若有异议请与网页底部的电邮联系)
求51单片机秒表汇编程序,有三个键的,开始,停止,清零~

不知C语言可否,或者你可以自己改成汇编的

我有,但是现在给不了你,后天才能给你

#include<reg51.h>
#include "intrins.h"
#include "absacc.h"
#define uchar unsigned char
uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff};//0-9
unsigned char sec=0,min=0,scanled;
unsigned char key=0,mode,time; 
unsigned char disdat[4];

void dischg()
{
disdat[3]=sec%10;
disdat[2]=sec/10;
disdat[1]=min;
disdat[0]=10;
}
void ext0() interrupt 0
{
key++;
key%=3;
}
void t0isr() interrupt 1 //秒计时
{
TH0=0x3c;
TL0=0xb0;
time++;
if(time==20)
{
time=0;
sec++;
if(sec>59)
{
sec=0;
min++;
if(min>9)min=0;
}
}
dischg();
}
void t1isr() interrupt 3 //显示
{
TH1=0xec;
TL1=0x78;
P0=0xff;
switch(scanled)
{
case 1:
P2=0x02;
P0=~(ledtab[disdat[1]]|0x80);
break;
case 2:
P2=0x04;
P0=~ledtab[disdat[2]];
break;
case 3:
P2=0x08;
P0=~ledtab[disdat[3]];
break;
default:break;
}
scanled++;
scanled%=4;
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xec;
TL1=0x78;
TR1=1;
TR0=0;
ET0=1;
ET1=1;
EX0=1;
IT0=1;
EA=1;
scanled=0;
time=0;
mode=1;
dischg();
while(1)
{
switch(key)
{
case 0:TR0=0;break;
case 1:TR0=1;break;
case 2:sec=0;min=0;break;
}
}
}


http://blog.163.com/asm_c/blog/static/248203113201043011300125/

参考。


51单片机数字秒表的程序 1、能实现0.0到9.9的计数 2、使用数码管显示计...
include<reg52.h> sbit LED1=P2^0;sbit LED2=P2^1;sbit LED3=P2^2;sbit LED4=P2^3;sbit P3_5 =P3^5;unsigned char keycnt;unsigned char Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned int counet,second,msecond,minute;void delay(unsigned int m...

51单片机的定时器程序,c语言编写,使用内部定时器设计一个三位秒表 (秒...
方法:首先:要学会数码管的显示程序 然后:按键的操作,注意软件的消抖(具体的是延时,10ms左右)。假设有k1~停表,k2~复位,k3~继续运行 先说停表和继续运行的 停表:如果k1按下,TR0=0;继续运行:如果k3按下,TR0=1;复位:直接用硬件复位单片机或者k2按下,数据清零。要实现数据的循环:只要...

用51单片机设计3位led数码显示管作秒表00.0-99.0求设计电路与c语言程 ...
include "STC12C54.H"define uchar unsigned char define uint unsigned int define dataport P1\/\/P1直接驱动数码管的8个阳极 sbit wei1=P3^3;\/\/再有三个管脚接3个三极管驱动数码管的阴极 sbit wei2=P3^4;sbit wei3=P3^5;uint a=0;\/\/中断次数计数,一次50ms,20次为1 秒 \/\/共阴数码管七...

单片机秒表设计
用AT89C51设计一个2位的LED数码显示作为“秒表”,这应该是一个仿真题,可用两位一体的共阴数码管,用定时器T0定时,得到1秒计时。

51单片机编程秒表问题
循环过程大致如下 void main(){ \/\/假设AB按钮为导通低电平 int num=0;int flag=1;while(1)\/\/主循环 等待A按下 { while(flag)\/\/等待A按下 { if(A连接的IO口为低电平) \/\/A按下 { flag=0;} } if(B连接的IO口为低电平) \/\/B按下 { flag=1;} if(num<100){ 显示num值;...

两位秒表 51单片机程序编程
你好:三个警告应该是void int_initial()与void timer0_initial()前边不用加void,然后就是Display()这个函数没有用。其次我想说,TMOD=0x01就行了,因为程序里边只用到了定时器0,其他的状态不管,甚至可以说把其他定时器关掉。,也用不着TMOD&=0xfd。然后中断函数要尽量精简、短小实干、不宜过长,...

51单片机4位数码管做秒表,C语言编程含有控制开关开始停止清零。_百度知 ...
include <REG52.H> include <intrins.h> define uchar unsigned char define uint unsigned int define ulint unsigned long int define y4c P2&=0x1f;P2|=0X80 define y5c P2&=0x1f;P2|=0Xa0 define y6c P2&=0x1f;P2|=0Xc0 define y7c P2&=0x1f;P2|=0Xe0 define rst P2&=0x1f ...

51单片机 芯片是89C52 实现秒表计时器!急急……
include<reg52.h> unsigned char x,y;sbit H=P3^6;unsigned char D[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; \/\/用于数字0~9的显示数据表 void delay(unsigned char a){ \/\/延时程序 unsigned char i;while(a--)for(i=115;i>0;i--);} void display(un...

求用单片机设计一个秒表AT89C51
;汇编程序如下。;使用T0定时方式1,每隔50ms中断一次,用于修改时间及显示 ;使用外部中断0、1,用于控制启动和清零 ;=== ORG 0000H AJMP MAIN ORG 0003H AJMP X0_INT ORG 000BH AJMP T0_INT ORG 0013H AJMP X1_INT MAIN:MOV TMOD,#01H ;T0定时方式1 MOV TH0, #(65536-5000...

51单片机中用数码管做秒表时怎么用一个独立按键控制开始和暂停,即第一...
其实,控制秒表的启动和停止,很简单。要做秒表,一定要用定时器吧,假如用T0,那开始初始化时,不写TR0=1,先不启动。\\x0d\\x0a当按一下键,再启动,TR0=1,就开始计时了。\\x0d\\x0a再 按一下键,就停止,TR0=0,就不计时了。\\x0d\\x0a程序好写,先 定义一个按键\\x0d\\x0asbit ...

安丘市17032163452: 求51单片机秒表汇编程序,有三个键的,分别作用为开始,停止,清零 -
饶侍司巴: #include<reg51.h> #include "intrins.h" #include "absacc.h" #define uchar unsigned char uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff};//0-9 unsigned char sec=0,min=0,scanled; unsigned char key=0,mode...

安丘市17032163452: 求单片机秒表程序 在下面的秒表程序中加入按键控制1号键(0xcf)按下开始2号键(0xdb)按下暂停3号键(0xde)
饶侍司巴: 楼主首先 1、要搞清楚秒表计时所用的时钟是多少,是32.768Khz吗?如果不是,mcu所计时的时间是不准确的. 2、将计得的时间转换成bcd码. 3、在程序中添加按键扫描程序注意防抖处理,我建议楼主每5ms扫描一次按键, 4、按键处理事件: a)按一下Key1 计时清零:可以将计时器清零就好了. b)按一下Key2 计时暂停:可以将计数器disable就好了, 由于不知道你的按键是怎样的连接方式,是低有效还是高有效,不清楚你有用了mcu哪个计数器所以程序部分不好仔细列举出来.

安丘市17032163452: 51单片机完成简易秒表的设计 -
饶侍司巴: 设计思路:1.定时器计时 设置秒表最小单位(如ms)设置定时器的寄存器初始值,定时器溢出显示等.2.键盘扫描 可设置中断也可直接键盘扫描,因键较少可以不必接成矩阵.可以只用三个键来实现. 键1:功能选择,包括功能设置、准备计时等 键2:计时开始,向上调整时间 键3:计时停止,向下调整时间3.显示 看单片机引脚多少,可以直接静态显示,可以用移位寄存器增加管脚功能.

安丘市17032163452: 51单片机编程秒表问题 -
饶侍司巴: 循环过程大致如下 void main() { //假设AB按钮为导通低电平 int num=0; int flag=1; while(1)//主循环 等待A按下 { while(flag)//等待A按下 { if(A连接的IO口为低电平) //A按下 { flag=0; } } if(B连接的IO口为低电平) //B按下 { flag=1; } if(num<100) { 显示num值; } else { num=0; 显示num值; } num++; } }

安丘市17032163452: 简易秒表的实现 -
饶侍司巴: ..... 原理图 你参考 PROTEUS 7 里的 51单片机学习板的原理图吧 一样的,他上面有4个独立键盘你用3个就好了,程序的话 就用个定时器2好了, 北航的单片机基础教科书就是大学里用的那本上有定时器2的工作原理和初始化设置,晶振的话基本是用12M的或6M的 计算下初值 3个按钮 暂停键就是控制定时器2的使能关, 启动键定时器2的使能开,清零键就是清除计数,计数这个变量自己定义下就可以.显示子程序的 话就直接参考教科书里的LED显示程序,只要注意下 数码管是共阴还是共阳就好了,你可以把参考的程序都贴上来后 在叫大家帮忙参考一下哪有问题比较好,从无到有什么都没有就提问,这样比较难解决问题

安丘市17032163452: 51单片机:写一个10s的秒表程序,用一个按键分别控制秒表启动、停止、清零.(要求:使用定时器1定时,定时20中断一次)问题就在开关上,谁能给我说怎么处理 最好有代码 10 -
饶侍司巴: 设立一个标志变量,初始化时,变量=0.定时器中断函数写成若标志变量为1则time++启动过程:扫描按键,若扫到,去抖延时,若扫到,标志变量取反.停止过程:同上.清零:扫描按键,若扫到,去抖延时,若扫到,且标志变量为0(停止状态),再循环扫描按键几个来回,具体时间可以用for来控制,目的就是实现一个长按清零.直接求代码很无聊,要自己写出来,做出来,才能体会到成功的酸爽.难点在长按与短按的区分,加油.

安丘市17032163452: 用KEIL编写C语言程序实现:单片机是AT89C51,实现一个计时器,数码管为6为的,有三个按键接在P0上. -
饶侍司巴: 按照你的要求写的程序如下,你拿去测试吧!#include "REG52.H" sbit SHUG_01 = P2^0; //数码管1 sbit SHUG_02 = P2^1; //数码管2 sbit SHUG_03 = P2^2; //数码管3 sbit SHUG_04 = P2^3; //数码管4 sbit SHUG_05 = P2^4; //数码管5 ...

安丘市17032163452: 单片机AT89C51芯片完成简易秒表的设计(三个8字数码管从0~999秒)设置一个开始按钮和一个复位按钮,谢了! -
饶侍司巴: #include unsigned char data dis_digit; unsigned char key_s, key_v; unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3 0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off unsigned char dis_buf[8]; // 显示缓冲区 unsigned ...

安丘市17032163452: 求基于51单片机的c语言程序,一个数码管显示的秒表 -
饶侍司巴: 功能键设置好久行了~ 比方变量s调秒,变量m调分 则功能键设置为中断,按一次时间停止,进入调时状态 再按一次中断启发,时间再次运行,退出调时状态 sbit add_s= P1^1; //按下按键为低电平~ ..... void interrupt_s() interrupt 0 { while(1) { if(add_s== 0) {s++;while(add_s==0);} //秒加 if(s==60) s=0;// 59后,自然回0 dislpay_(); //动态显示,不然调整效果哪里看. ..... if(flag==0)break; } } 这是参考,仿真有空再做,protues吧?

安丘市17032163452: 用51单片机做秒表设计 -
饶侍司巴: 遇到懒学生了,这个不就是一个定时器加显示吗,有什么难的,自己翻翻微机原理书就可以做 了,也就四五十行汇编语言就行了,用C就更加简单,具体的方法:用定时器定时0.2ms,定时到了就给固定的一个变量加1,然后判断这个变量是不是到了500,到了就清零然后把秒的变量加1,就是1s了,(分和时也是如此,秒为60,秒清零,分加1);主程序就只管显示和按键,按键随便用中断还是查询,我建议你查询,因为程序简单,显示程序就是查个表,自己把数码显示的断码表编好就可以了,把秒的数值查表对应显示,完了就查询按键,按键累加,值为0是没按,1是按1次,2是按2次,3是按3次,同时清零,很简单的

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