51 单片机编程:双路计数器

发布者:轻松自在最新更新时间:2018-05-09 来源: eefocus关键字:单片机编程  双路计数器 手机看文章 扫描二维码
随时随地手机看文章

利用 51 单片机构成计数器,计数的上限,做的大一些,也不难,几千几万都可以。


下面的电路,小了一点,是个两路两位的计数器。


用来记录乒乓球比赛,还算可以,用于篮球比赛,分数超过 99,这个电路就不够用了。


51 单片机编程:双路计数器 - 非著名博主 - 电子信息角落



电路图中,用的是共阳数码管;还设置了六个按键,用途,都已经标出。


用 C 语言编写驱动程序,是比较简单的,全部代码如下:


#include 

unsigned char  n1, n2;

//-----------------------------------------------

void delay(unsigned int i)   //1ms延时程序

{

    unsigned char  j;

    while(i--)   for(j = 0; j < 115; j++);

}

//-----------------------------------------------

void disp(void)

{

    unsigned char code SEG[] = {

      0xc0, 0xf9, 0xa4, 0xb0, 0x99, //0-4

      0x92, 0x82, 0xf8, 0x80, 0x90};//5-9


    P0 = SEG[n1 / 10]; P1 = 1; delay(2); P1 = 0;

    P0 = SEG[n1 % 10]; P1 = 2; delay(2); P1 = 0;

    P0 = SEG[n2 / 10]; P1 = 4; delay(2); P1 = 0;

    P0 = SEG[n2 % 10]; P1 = 8; delay(2); P1 = 0;

}

//-----------------------------------------------

void main(void)

{

    unsigned char k, t;

    n1 = n2 = 0;

    while(1) {

      disp();

      if (~(P2 | 0xc0)) {

        disp();

        if (~(P2 | 0xc0)) {

          k = ~(P2 | 0xc0);

          while (~(P2 | 0xc0))  disp();

          if       (k == 1)  {n1++; if (n1 == 100) n1 = 0;}

          else  if (k == 2)  {n1--; if (n1 == -1) n1 = 99;}

          else  if (k == 4)  {n2++; if (n2 == 100) n2 = 0;}

          else  if (k == 8)  {n2--; if (n1 == -1) n2 = 99;}

          else  if (k == 16) {n1 = n2 = 0;}

          else  if (k == 32) {t = n1; n1 = n2; n2 = t;}

    } } }

}

//-----------------------------------------------


是不是很简单?


用汇编语言来编程,就显得长多了。


和上述 C 语言功能相同的汇编语言程序,全部代码如下:


    ORG   0000H

    JMP   MAIN

    ORG   0030H

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

MAIN:

    CALL  DISP

    MOV   A, P2

    CJNE  A, #0FFH, KEY

    CLR   00H

    JMP   MAIN

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

KEY:

    JNB   00H, A_ADD1

    JMP   MAIN

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

A_ADD1:

    SETB  00H

    JB    P2.0, A_SUB1

    MOV   A, R0

    ADD   A, #01H

    DA    A

    MOV   R0, A

    JMP   MAIN

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

A_SUB1:

    JB    P2.1, B_ADD1

    MOV   A, R0

    ADD   A, #99H

    DA    A      

    MOV   R0, A

    JMP   MAIN

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

B_ADD1:

    JB    P2.2, B_SUB1

    MOV   A, R1

    ADD   A, #01H

    DA    A

    MOV   R1, A

    JMP   MAIN

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

B_SUB1:

    JB    P2.3, CLR_0

    MOV   A, R1

    ADD   A, #99H

    DA    A

    MOV   R1, A

    JMP   MAIN

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

CLR_0:

    JB    P2.4, EXCH

    MOV   R0, #00H

    MOV   R1, #00H

    JMP   MAIN

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

EXCH:

    JB    P2.5, END_K

    MOV   A, R0

    XCH   A, R1

    MOV   R0, A

    JMP   MAIN

END_K:

    CLR   00H

    JMP   MAIN

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

DISP:

    MOV   DPTR, #BG

    MOV   A, R0

    SWAP  A

    ANL   A, #0FH

    MOVC  A, @A + DPTR

    MOV   P0, A

    SETB  P1.0

    CALL  DELAY

    CLR   P1.0

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

    MOV   A, R0

    ANL   A, #0FH

    MOVC  A, @A + DPTR

    MOV   P0, A

    SETB  P1.1

    CALL  DELAY

    CLR   P1.1

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

    MOV   A, R1

    SWAP  A

    ANL   A, #0FH

    MOVC  A, @A + DPTR

    MOV   P0, A

    SETB  P1.2

    CALL  DELAY

    CLR   P1.2

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

    MOV   A, R1

    ANL   A, #0FH

    MOVC  A, @A + DPTR

    MOV   P0, A

    SETB  P1.3

    CALL  DELAY

    CLR   P1.3

RET

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

DELAY:

    DJNZ  R7, $

    DJNZ  R7, $

    DJNZ  R7, $

    DJNZ  R7, $

RET

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

BG:

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

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

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

END


关键字:单片机编程  双路计数器 引用地址:51 单片机编程:双路计数器

上一篇:51 汇编语言编程--输入密码
下一篇:51 汇编编程:8×8 点阵驱动

推荐阅读最新更新时间:2024-03-16 16:02

基于MCF51QE128的SD卡接口设计
1 SD卡标准 SD卡标准是SD卡协会针对可移动存储设备设计专利并授权的一种标准,主要用于制定卡的外形尺寸、电气接口和通信协议。 1.1 SD卡引脚功能 SD卡的外形如图1所示,引脚功能如表1所列。SD卡的引脚具有双重功能,既可工作在SD模式,也可工作在SPI模式。不同的模式下,引脚的功能不同。 SD模式多用于对SD卡读写速度要求较高的场合,SPI模式则是以牺牲读写速度换取更好的硬件接口兼容性。由于SPI协议是目前广泛流行的通信协议,大多数高性能单片机都配备了SPI硬件接口,硬件连接相对简单,因此,在对SD卡读写速度要求不高的情况下,采用SPI模式无疑是一个不错的选择。 1.2 SPI模式 SPI模式是一种简单
[单片机]
基于MCF<font color='red'>51</font>QE128的SD卡接口设计
深南股份:收购铭诚科技51%股权 布局信息系统集成市场
    2018年3月16日,深南金科股份有限公司(股票简称:深南股份,股票代码:002417)对外宣称,为顺应公司战略转型发展需要,公司与广州铭诚计算机科技有限公司(以下简称:铭诚科技)股东朱岳标、缪坤民、徐晶晶签署了关于铭诚科技股权转让协议以及业绩承诺补偿协议。   此次,深南股份拟以人民币12750万元受让铭诚科技的股东朱岳标、缪坤民、徐晶晶合计持有铭诚科技51%的股权。交易完成后,深南股份为铭诚科技控股股东。本次交易不构成关联交易,也不构成重大资产重组。   据天天证券网资料显示,铭诚科技成立于2007年12月,注册资金为2200万,主要以从事软件开发、信息系统集成服务、计算机房维护服务、信息技术咨 询服务、集成电路设计、
[半导体设计/制造]
51单片机红外解码库文件
遥控器就是下面图上的那种 完整的程序源码下载地址:http://www.51hei.com/bbs/dpj-20623-1.html 红外解码文件 ir.h/*--------------------------------------------------- 名称:红外驱动 编写:YuMin_Dong 时间:2012.11.26 ---------------------------------------------------*/ #ifndef _IR_H_ #define _IR_H_ uint8 irtime; uint8 irdata /*,irprodata */; bit irreceive_ok,irpro_
[单片机]
<font color='red'>51</font>单片机红外解码库文件
51单片机外部中断处理源程序
//--------------------------------------------------- #include reg52.h //--------------------------------------------------- //重定义I/0引脚名称 sbit led1=P1^1; sbit led2=P1^2; sbit led3=P1^3; sbit led4=P1^4; sbit P32=P3^2; //--------------------------------------------------- //全局变量及位标志定义 bit FINT0; bit FINT1; bit FT0; bit
[单片机]
奥地利微电子新款AS8515传感器接口为汽车电池电量传感提供完整解决方案
中国,2012年12月12日——奥地利微电子公司(SIX股票代码:AMS)是全球领先的高性能模拟IC和传感器芯片制造商,专为消费、工业、汽车应用行业服务,该公司今日宣布推出系统级封装(SiP)芯片AS8515。当通过SPI接口连接任何一个微控制器时,新品可帮助实现完整的汽车电池测量系统。 AS8515是一款堆叠晶元封装的产品,包含一个具有两个高精度ADC通道用以测量电流、电压及温度的信号处理晶元、一个具有稳压功能的高压CMOS晶元以及一个LIN收发器和监视功能。产品将支持制造商满足ISO26262安全标准规定的要求,并且非常适合应用于使用锂离子电池的电动汽车、混合动力汽车以及内燃发动机车辆的电池管理系统(BMS
[汽车电子]
80C51单片机实现专用寄存器位寻址的设计方案
80C51单片机有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式。所谓位寻址,就是对内部RAM或可位寻址的特殊功能寄存器SFR内的某个位,直接加以置位为1或复位为0。 位寻址的范围,也就是哪些部份可以进行位寻址: 1、我们在第十二课学习51单片机的存储器结构时,我们已知道在单片机的内部数据存储器RAM的低128单元中有一个区域叫位寻址区。它的单元地址是20H-2FH。共有16个单元,一个单元是8位,所以位寻址区共有128位。这128位都单独有一个位地址,其位地址的名字就是00H-7FH。 这里就有一个比较麻烦的问题需要大家理解清楚了。我们在前面的学习中00H、01H。。。。7FH等等,所表示的都是一个字节(或者
[单片机]
80C<font color='red'>51</font>单片机实现专用寄存器位寻址的设计方案
基于P89V51RB2单片机的实验箱设计与开发
单片机,是嵌入式处理器的一大类(另外还有DSP、FPGA等),具有高度集成、体积小、功耗低、降低成本等诸多优点。随着单片机技术的不断发展,单片机在微机控制领域占据着重要地位,由于其具有体积小、可靠性好、易扩展、控制功能强、使用方便等优点,在智能仪表、工业测控、计算机网络与通信设备、日常生活及家用电器等方面都得到了广泛的应用 .单片机已广泛应用于工业控制、智能家用电器、通讯、医疗和军事等众多领域,社会对掌握单片机技术的应用型人才的需求越来越大 . 本设计的实验箱采用了数字逻辑,单片机原理,电路基础,动态数码管扫描等各个方面的理论依据。单片机原理是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,单
[电源管理]
X25165芯片在8051系统中的应用
    摘要: C25165是美国Xicor公司生产的集看门狗、电压监控和串行EEPROM于一体的专用集成电路,文中介绍了X25165的结构,功能及工作原理,并以其在8051系统中的应用实例,给出了X25165与8051单片机的硬件接口电路和软件接口程序。      关键词: 单片机  看门狗  X25165  接口  软件      美国Xicor公司生产的Z25165芯片是集看门狗、电压监控和串行EEPROM三项功能于一体的集成电路产品。该芯片的应用将有利于简化单片机系统的结构,降低系统的成本,减少对电路板的空间需求,增加系统的可靠性。 1 芯片简介     X25
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved