历史上的今天
返回首页

历史上的今天

今天是:2024年09月20日(星期五)

正在发生

2019年09月20日 | 51单片机学习笔记(五)

2019-09-20 来源:eefocus

已经很多天没有写程序了,原因很简单,竟是迷上了新版的西游记,连续看了几天,今天写的是续上以前的教材,“心率计数器”是继“电子时钟”的一个计算器/计时器的应用。


对于计数器/计时器的应用,似乎就是熟练的问题,对计数器/计时器的使用很容易理解,但是要是不看书本,那编写出的程序多半是有错误的,因为对TMOD,TCON,IE,的控制方式,不看书是很难把它记住的,而应用起来却是十分简单。


在这里要说一下在计数器模式下,t1计数的是p3.5的脉冲信号,t0计数的是来自p3.4的脉冲信号。因为我手头上没有心率传感器,所以就只用一根杜邦线接在p3.5口上,然后用手捏杜邦线的另一头,用这种方法给p3.5脉冲信号,挺有意思的。


写这个程序似乎没有什么收获,就是了解了一下传感器的使用,接收脉冲信号的方法和对计数器的使用吧,不值得一说。

MIAO EQU 20H ;********定义秒内存**************


ORG 0000H

SJMP START

ORG 000BH   ;********中断跳转位置**************

SJMP COUNT   ;********跳转至count计算时间**************

ORG 0030H


;********初始化**************

START:

MOV SP,#060H

MOV DPTR,#TAB

MOV R0,#0


MOV TMOD,#01010001B   ;********t1计数,t0计时**************

MOV TL1,#0

MOV TH0,#3CH   ;********计时器初始值**************

MOV TL0,#0B0H

    MOV IE,#10000010B    ;********中断允许**************

SETB TR0 ;********开启计时器,计数器**************

SETB TR1


MAIN:

CALL DISPLAY1 ;********输出时间**************

CALL DISPLAY2   ;********计数**************

CALL STOP

SJMP MAIN


DISPLAY1:    ;********输出时间**************

MOV A,MIAO

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV P0,A

CLR P1.0

CALL DELAY

SETB P1.0


MOV A,B

MOVC A,@A+DPTR

MOV P0,A

CLR P1.1

CALL DELAY

SETB P1.1

RET


DISPLAY2: ;********输出计数**************

MOV A,TL1

MOV B,#10

DIV AB


MOVC A,@A+DPTR

MOV P0,A

CLR P1.6

CALL DELAY

SETB P1.6


MOV A,B

MOVC A,@A+DPTR

MOV P0,A

CLR P1.7

CALL DELAY

SETB P1.7


RET


COUNT:   ;********计算时间*************

INC R0

CJNE R0,#20,HUI

INC MIAO   ;********1秒时间到,秒位加**************

MOV R0,#0   ;********重置计时器**************

MOV TH0,#3CH

MOV TL0,#0B0H

HUI: RETI    ;********中断返回**************


STOP:    ;********判断时间**************

MOV A,MIAO

CJNE A,#60,HUI2

CLR TR1   ;********1分钟时间到,计时器,计数器停止工作**************

CLR TR0


HUI2: RET


DELAY:

MOV R1,#5

D1: MOV R2,#250

D2: DJNZ R2,D2

DJNZ R1,D1

RET


 

;*****************共阴极数码表****************

TAB:

DB 03FH,006H,05BH,04FH,066H ;0,1,2,3,4

DB 06DH,07DH,007H,07FH,06FH ;5,6,7,8,9



END



推荐阅读

史海拾趣

昭华(CHA)公司的发展小趣事

昭华公司一直注重品牌建设和市场拓展。他们通过参加各种行业展会、举办技术研讨会等方式,积极宣传公司的产品和技术优势。同时,昭华公司还加强了与客户的沟通和合作,深入了解客户需求并提供定制化的解决方案。这些努力使得昭华公司的品牌知名度不断提升,市场份额也逐渐扩大。

Advanced Technology Corp公司的发展小趣事

随着科技的飞速发展,ATC公司始终保持着对技术创新的热情与追求。公司不断投入研发资源,引进先进设备和技术人才,致力于开发更具创新性和实用性的电子产品。经过多年的努力,ATC公司在多个技术领域取得了重要突破,推出了一系列具有行业影响力的创新产品,赢得了市场的广泛认可。

Densitron公司的发展小趣事

在电子行业的激烈竞争中,Densitron公司始终坚持技术创新作为发展的核心动力。早期,公司投入大量研发资源,成功开发出一种新型的铟锡氧化物(ITO)材料,这种材料在触摸屏领域具有出色的性能,使得公司的产品在市场上脱颖而出。随着技术的不断升级,Densitron公司又相继推出了一系列创新产品,不仅满足了客户日益增长的需求,也推动了整个行业的进步。

Honeywell公司的发展小趣事

背景:随着科技的进步,霍尼韦尔开始将目光投向更广阔的领域,其中航空航天成为重要的发展方向。

发展:霍尼韦尔在航空航天领域取得了多项技术突破,其仪器仪表和控制系统在多个重要项目中发挥了关键作用。其中,最著名的莫过于1969年阿波罗11号登月任务中,霍尼韦尔的仪器仪表为宇航员提供了稳定的控制和导航支持。

关键事件:阿波罗11号任务的成功不仅展示了霍尼韦尔在航空航天领域的实力,也进一步提升了公司的国际声誉和市场地位。

ELM [ELM Electronics]公司的发展小趣事

ELM Electronics成立于XXXX年,由一群富有创新精神和电子技术专长的工程师创立。初创时期,公司专注于设计和生产高质量的电子元器件,以满足日益增长的电子产品市场需求。通过不断的技术创新和严格的质量控制,ELM逐渐在电子行业中树立了良好的口碑。

Arduino公司的发展小趣事

Arduino平台从一开始就秉持着开源和合作的理念。它的源代码、硬件设计和文档都是公开的,鼓励开发者们共同参与和贡献。这种开放的精神吸引了大量的开发者加入Arduino社区,共同推动Arduino平台的发展。同时,Arduino也与许多企业和机构建立了合作关系,共同推动电子行业的发展和创新。

问答坊 | AI 解惑

[求助]我的可调恒温电烙铁指示灯不亮了!!

突然那个方块状零件冒出火花,有三个接角..然后指示灯就不能亮了.只要一加热这个零件就过热..把手柄都烫化了...请问这是什么零件叫什么??为什么么会突然烧掉???…

查看全部问答>

新技术使电容储能增加一倍

根据美国亚特兰大州佐治亚理工学院有机光电中心(Center for Organic Photonics and Electronics)的研究人员介绍,一种创新的封装技术将使用具有高介电常数特性的钛酸钡(BaTiO3)纳米级微粒子来制造电容器,该技术能使电容器储存的能量提高一倍。 ...…

查看全部问答>

ST单片机,STM8S103F3

大量现货供应ST单片机,性价比好,可以代替很多单片机!!如有需求可以供样品,开发工具也有销售!!!!!…

查看全部问答>

射频电路板设计技巧

射频电路板设计技巧 成功的RF设计必须仔细注意整个设计过程中每个步骤及每个细节这意味着必须在设计开始阶段就要进行彻底的仔细的规划并对每个设计步骤的进展进行全面持续的评估而这种细致的设计技巧正是国内大多数电子企业文化所欠缺的…

查看全部问答>

请问一个驱动开发入门问题

我想从事驱动开发,可是不知道如何入门?从事驱动开发需要那些方面的知识?驱动开发的学习体系是什么?请大家推荐几本好书(国外程序员写的),几个驱动开发的好论坛或者邮件列表,谢谢。…

查看全部问答>

386是否采用流水线设计?

一些介绍硬件的书上说486是第一个真正采用流水线设计的Intel X86处理器。包括新浪网上也是这样说的 http://tech.sina.com.cn/h/2007-03-23/15421431097.shtml 但是我最近看——《16位、32位微机原理》中国科技大学出版(中科院考研指定用书)上说8 ...…

查看全部问答>

谈谈你模电生涯的心酸历程

在学生时代,让人头疼的课程系列之模拟电子,越想越纠结。尤其是我们这种还处于学生的硬件爱好者来说,其酸甜苦辣,我们的感触自然深刻~~ 不知道那些已经在此领域有一定成就的大哥哥、大姐姐们,是如何练就那身本领的?望硬件界的精英们为我们这些 ...…

查看全部问答>

C语言中的 .switch段!!

我现在使用C语言编程,仿真没有问题,烧到flash后,复位不能运行,检查发现,map文件中多了一个.switch的段,并且定义在外部ram中,请问这种情况要怎么处理啊? 各位大侠帮帮忙!!…

查看全部问答>

请问各位大侠有什么方法可以测贴片电容的大小么?

请问各位大侠有什么方法可以测贴片电容的大小么?…

查看全部问答>