单片机内部定时/计数器实验程序

发布者:EternalSunset最新更新时间:2020-12-24 来源: 51hei关键字:单片机  内部定时  计数器 手机看文章 扫描二维码
随时随地手机看文章

新人发帖:

实验六、实验内容

1. 连线并编制程序。使用定时器1中断,按方式1工作,得到1S的定时;按方式2工作,得到4ms的定时。

2.初始化程序

包括定时器初始化和中断系统初始化。主要对IP,IE,TCON,TMOD 的相应位进行正确的设置,并将时间常数送入定时器中。由于只有定时器中断,IP不必设置。

3.设计中断服务程序和主程序

中断服务程序除了要完成计时工作外,还要实现动态显示。


软件设计:扩展单个按键,使其具有“开启/停止/清除”的功能,开启:可以实现0—99S的计时,停止:能显示记录的时间,清除:具有清除当前记录重新记录数据。


仿真原理图如下

单片机源程序如下:

#include

#define uchar unsigned char

#define uint usigned int

#define SEG P2

uchar key_idx,key_state;

#define SCANP P1;

sbit LED=P0^7;

sbit K1=P1^7;

char code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,

                   0x92,0x83,0xf8,0x80,0x98};


char disp[2]={0xc0,0xc0};

char seconds=0;     //秒数

char scan=0;        //扫描信号

int count_T0=0;     //中断次数

int count_T1=0;

void delay(int x)

{

uchar i;

while(x--)

for(i=0;i<100;i++);

}

void key_envent()

{

if(key_state==0)

{

  key_idx=(key_idx+1)%3;

  switch(key_idx)

  {

   case 1:EA=1;TR0=1;break;

   case 2:TR0=0;break  ;

        case 0:TR0=1;seconds=0;  

  }       

}

}

main()

{  key_idx=0;         //按键次数(0,1,2,3)

key_state=1;//按键状态

  IE=0x8a;

  TMOD=0x21;

  TH0=(65636-50000)/256;

  TL0=(65636-50000)%256;

  TR0=1;

  TH1=256-250;

  TL1=256-250;

  TR1=1;

  LED=1;

  while(1)

{

   if(key_state!=K1)

   {

   delay(10);

   key_state=K1;

   key_envent();

   }   

}

  }

  //T0中断子程序,计算显示秒数

void T0_1s(void) interrupt  1

  {         TH0=(65636-50000)/256;

     TL0=(65636-50000)%256;

       

         if(++count_T0==20)                  //20*0.05=1s

         {

            count_T0=0;

                if(key_idx==1) seconds++;

            if(seconds==100)

                {  seconds=0;

                   LED=~LED;}

               

         }

         disp[1]=TAB[seconds/10];

         disp[0]=TAB[seconds%10];  //个位

        }

void T1_8ms(void) interrupt 3

        {

           if(++count_T1==32)   //0.25*32=8ms

           { count_T1=0;

             if(++scan==3) scan=1;

                 SEG=0xff;

                 P1=~scan;

                 SEG=disp[scan-1];

                }

    }


关键字:单片机  内部定时  计数器 引用地址:单片机内部定时/计数器实验程序

上一篇:单片机+ADC0832热电阻PT100测温程序
下一篇:格雷码转换为二进制码_51单片机汇编语言子程序

推荐阅读最新更新时间:2024-11-13 13:29

基于AVR单片机的智能化防盗保护系统设计
引言 博物馆内的藏品常常受到人为盗窃的威胁,周围环境的变化也会对其造成破坏,因此需要极为可靠的防盗系统及完善的空调系统,本设计的目的就是实现对馆藏品的智能化防盗和保护。博物馆关闭时便可将此防盗保护器启动,通过CMOS传感器对博物馆进行扫描,图像信号在微处理器中进行处理筛选压缩,并与被监控信号(人形信号)进行比较,一旦出现类人形信号,便将数据进行存储(这样可以大大节省存储空间),并进行报警。被监控信号可以增加,可以是其它任何可能对馆藏品造成损害的动物,只不过在进行筛选比较处理时要复杂一些。另外,通过温度传感器对温度信号进行采集监控,通过控制馆内空调来达到调节温度的效果,以避免馆内文物因为温度的变化而造成损害。 图1 系统功能框
[单片机]
基于AVR<font color='red'>单片机</font>的智能化防盗保护系统设计
怎么看懂别人写的单片机项目代码
记得刚开始接触代码的时候,总觉得很神秘,也好奇到底是怎样的牛人,才能把这么多复杂的”天书”写出来去。 当时多希望自己一夜之间也拥有这种能力,能自己写代码去把自己的想法通过技术的手段制造出来。 现实哪有这么好的事,任何一项能力,必须都要经过破茧成蝶的痛苦过程。 记得我第一份单片机开发的工作,掉头发的数量也是历史之最,也是导致我现在发际线变高的罪魁祸首。 那个时候是第一次真正意义上去做实际产品开发,公司也没敢让我参与新产品研发,而是维护老产品,就是改改代码升级下产品功能。 我记得很清楚,当时要维护一个MF刷卡权限管理的控制板,用的是STC的单片机。 那个时候死磕MF卡的东西,比如说MF卡内部的扇区分布以及初始化
[单片机]
STC单片机之我见(一)-----IO口
本文以STC12C5A60S2系列单片机为例来介绍: 先介绍准双向口模式,其拉电流为200mA左右,比如P2.0口外接一个100欧电阻和小led灯珠。做实验的时候会发现灯珠的亮度其实很低,因为电流太小。当设置成强推挽输出时会发现灯珠明显比较亮,因为此时的电流已经达到了20mA. P2.0口直接用准双向口模式驱动蜂鸣器的时候,蜂鸣器不响,同样是因为电流太小,此时可以外加一个10K的电阻和一个三极管来驱动之;P2.0用强推挽模式时可直接驱动蜂鸣器响。 小贴士: 1.同时对8个IO口进行设置时,可用P2=0xFF的形式来赋值,也可以单独P2.0=0
[单片机]
基于STM32单片机的摇头风扇设计
本设计的硬件构成: STM32F103C8T6单片机最小系统板+时钟晶振电路+复位电路(上电自复位,手动复位),LCD1602显示屏电路,独立按键电路,ULN2003步进电机驱动电路,蓝牙模块,语音识别模块,总电源供电电路; 功能介绍: 1.LCD1602液晶显示当前风扇等级,语音控制状态,摇头状态; 2.共设置有4个按键,按键1为摇头开关键;按键2为语音识别功能的开关键;按键3为风扇挡位上调键;按键4为风扇挡位下调键; 3.可通过蓝牙模块,在手机APP上对风扇状态进行监控和控制; 4.可通过语音识别模块,用户说出相应语音,实现对风扇的语音控制(演示视频有详细的演示过程); 主要物料清单及型号: 显示屏:LCD1602-5V;
[单片机]
基于STM32<font color='red'>单片机</font>的摇头风扇设计
AVR单片机学习(二)硬件电路的设计教程
1、ATmega 16简介 高速(16MHZ) 、RISC AVR 内核 1KB SRAM,16KB Flash ROM 512字节EEPROM ,方便数据存储 4个8位并行IO口,驱动能力强 具有Jtag 仿真接口与ISP下载接口 低功耗、宽电压(2.7V~5.5V) 丰富的片上外设:3个外部中断,3个定时器,USART,SPI ,IIC,ADC 片内上电复位电路 片内RC振荡器,可以省去外部晶振 由片内RC振荡器如果始终要求不是很高可以省掉一个晶振。片内有上电复位电路省了复位电路,如需要手动复位还是必须设计外部的手动复位电路。 2、构建ATmega16最小系统 电源
[单片机]
AVR<font color='red'>单片机</font>学习(二)硬件电路的设计教程
51单片机的一些开发实用技巧
一.C语言中嵌入汇编语言 单片机开发中,通常我们使用C语言编写主程序,这样可以充分借助C语言工具提供的运算库函数及强大的数据处理能力。但C语言的可控性不及汇编语言,在有些对时序要求严格的处理上,我们还需用灵活性更强的汇编语言来编写。上海AVR单片机培训这样就产生了C语言和汇编语言混合编程的问题,一般分成三种方式:1.汇编语言调用C语言函数;2. C语言调用汇编语言;3. C语言中嵌入汇编语言。这里我们主要介绍第3种,即C语言中嵌入汇编语言。 下面的一段程序是主程序调用精确的205μS延时子程序并使P1.0交替输出高、低电平的方波。 /*------------程序名test.c------------*/ #include P
[单片机]
51<font color='red'>单片机</font>的一些开发实用技巧
汽车MCU“不死鸟”气质显现,中国再添一把火
汽车 芯片 中,负责计算处理的主要有MCU和SoC。传统应用,特别是燃油车,MCU所占比重很大,SoC用量很少。随着新能源汽车,以及智能化水平的提高,SoC用量大幅增加,有超过MCU之势,那么,车用MCU还有未来吗?本文讨论一下这个话题。 MCU应用广泛,你能想到的各种商业、工业、消费类电子设备,绝大多数都会用到MCU,在所有应用中,汽车对MCU的性能、可靠性、安全性的要求是最高的,同时也是MCU最大的应用领域,2021年,在整个MCU市场中,车用部分占比达到38%-40%。目前,汽车 MCU市场规模约为80亿美元,2022-2025年CAGR为11%,高于MCU行业平均水平。 在单车用量方面,以一辆奥迪豪华型SUV为例,
[汽车电子]
汽车<font color='red'>MCU</font>“不死鸟”气质显现,中国再添一把火
你了解GD32 MCU上下电要求吗
你了解GD32 MCU的上下电要求吗?MCU的上下电对于系统的稳定运行非常重要。 以GD32F30X为例,上电/掉电复位波形如如下图所示。 上电过程中,VDD/VDDA电压上电爬坡,当电压高于VPOR(上电复位电压)MCU开始启动,之后内部逻辑电路延迟2ms后NRST引脚拉高,MCU正式启动,此为上电过程。上电过程中,对于上电爬坡斜率没有要求,对于电源稳定性有要求,上电过程中尽量避免电源波动以及突然的跌落,比如上电到2.6V以后再次跌落到POR附近,但没有跌破PDR,则有可能造成MCU加载代码异常进而导致启动失败。 掉电过程中,当电压低于VPDR后,NRST拉低,MCU完成掉电。掉电电压需要跌落到VPDR以下,尽量跌落到0V
[单片机]
你了解GD32 <font color='red'>MCU</font>上下电要求吗
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved