#include "config.h "
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
int num; // 显示数字值
int xms = 0; // 毫秒计数变量
void timer0() interrupt 1 // 数字1为中断号,每种中断对应一个中断号
{
TH0 = 0xfc; // 重要!!第一次计数满后会从0开始计数,应该在中断程序中重设计数初值
TL0 = 0x65;
xms++;
if(xms == 1000){
num++;
if(num > 9) num = 0;
P0 = num;
xms = 0;
}
}
// 定时器0初始化
void timer0_init()
{
TMOD = 0x01; // 设定定时器0为工作方式1
TH0 = 0xfc; // 设定计数初值
TL0 = 0x65;
EA = 1; // 开总中断
ET0 = 1; // 开定时中断0
TR0 = 1; // 启动定时器0,计数满后执行中断服务程序timer0()
}
// 主函数
void main(void)
{
num = 0;
P0 = num;
timer0_init();
for(;;){
}
}
本程序采用数码管独立显示,计数初值由工作方式、晶振频率、定时时间共同决定。
定时计数器中断程序的编写过程
1. 工作方式控制字(TMOD)设置
2. 计数初值的计算并装入THx、TLx
3. 中断允许为ETx、EA的设置,使主机开放中断
4. 启/停TRx的设置#SinaEditor_Temp_FontName
关键字:计时器 单片机
引用地址:
简易中断计时器
推荐阅读最新更新时间:2024-03-16 14:42
STM32单片机半主机模式的应用
在keil中编程时常会遇到__use_no_semihosting_swi的警告,这时你就是进入了半主机模式。 在嵌入式的编程中你是避免不了使用printf、fopen、fclose等函数的但是因为嵌入式的程序中并没有对这些函数的底层实现,使得设备运行时会进入软件中断BAEB处,这时就需要__use_no_semihosting_swi这 个声明,使程序遇到这些文件操作函数时不停在此中断处,具体操作如下,将下列程序加入你的工程中: #pragmaimport(__use_no_semihosting_swi)#pragmaimport(_main_redirection)constchar__stdin_name[150]
[单片机]
基于51单片机的语音采集系统设计
功能: 基于51单片机的语音实时采集系统 系统由STC89C52单片机+ISD4004录音芯片+LM386功放模块+小喇叭+LCD1602+按键+指示灯+电源构成 具体实现功能: (1)可通过按键随时选择相应的录音进行播放; (2)可以通过按键随时录音,可以录制4段声音,并可以按键控制播放和暂停,最长可以录制8分钟; (3)播放的音量可以通过调节电位器改变。 第1章前言 1.1 研究意义 数码录音笔对于我们现如今的人们己经是再熟悉不过的产品了,它己经应用在了很多地方,其中主体部分应该是记者了。正是基于录音笔能够录音的特点,在你无法凭借记忆记住重要谈话,或者重要会议的重要内容的时候,它便体现除了它的优势,清晰完整无误的记录下你要记录
[单片机]
51单片机教程第5讲_C51程序
c51语言程序是 一个由主函数和若干个函数构成。其中主函数就是程序的起点,单片机运行程序,首先会执行主函数里面的第一条语句,直到执行完成主函数的所有语句,单片机的程序一般都是来完成某项具体功能的,所以程序一般都是一个循环结构的语句。 函数从用户使用角度讲,分为两类,一类是标准库函数,一类是用户自定义的函数。标准库函数是由开发环境自带的,比如我们常用的KEIL软件,就自带有很多库函数。库函数可以直接调用。用户自己写的函数,一般都是完成一些库函数里面没有的特定功能。 函数的一般形式为: 返回值类型 函数名(形式参数列表) { 函数体 } 返回值类型可以是基本数据类型或者指针类型,如:int float char double等等。当
[单片机]
基于8051单片机的一个多功能用电故障控制器实现
1 引言 对于电网短路和线路故障检测保护已有不少研究。市面上的电器短路、过载、超压的保护器功能单一。容易损坏,没用提示功能,不够人性化。但随人们生活水平的不断提高。用电设备也不断增加,产生了肓目用电现象。这给人们造成极大的安全隐患。其中危害性最大的用电故障有三种:输入电压过高、室内线路严重过载、用电器短路。本文设计的单片机AT89C5l用电故障控制系统的目的就是为了防止这三种故障带来的危害。 2 硬件的组成 单片机用电故障控制系统的硬件分别是:由降压变压器、2个相瓦串联的感应线圈、升压变JK器、电磁开关、5V稳压电源、超压过流信号获取比较电路、可编程接门扩展芯片8255、HD44780字符液晶显示模块、
[单片机]
基于WTC6216的触摸式按键设计
随着现代电子技术尤其是人机接口技术的不断发展,触摸式按键在电子产品和手持式仪器中得到越来越广泛应用。相对传统的机械式按键,触摸式按键具有明显的技术优势,不但系统硬件结构简单,生产成本低,而且在使用中不易磨损损坏,提高了按键的使用寿命。此外触摸式按键还可以增加产品外观设计的灵活性,提升产品的品质。本文提出了一种基于WTC6216ASI集成电路的触摸式按键设计方案,具有较高的实用性。 1 电容式触摸按键工作原理 触摸式按键可分为电阻式触摸按键和电容式触摸按键。任何两个导电的物体之间都存在着感应电容,一个按键即一个焊盘与大地也可构成一个感应电容,在周围环境不变化的情况下,该感应电容值是固定不变的微小值。当有人体手指靠近触
[单片机]
8051单片机基础4:数据存储类型(data,idata,xdata,code)
参考来源:Keil Help uVision Help Cx51 Compiler User’s Guide Language Extensions Memory Types 存储类型 Cx51编译器可以访问8051的所有存储区域,声明变量时可以指定分配的存储区,也可以基于内存模型配置进行隐式分配。 实际项目中经常用到的是 xdata, code 使用方法 变量声明/定义时,添加关键字data,idata,bdata,pdata,xdata,code。 unsigned char data var1; unsigned char code text = ENTER PARAMETER: ; unsigne
[单片机]
基于MSP430F449单片机宽带直流放大器的设计
1.数据处理和控制核心选择 方案一:采用单片机AT89S52+FPGA来实现信号增益控制、数据处理和人机界面控制等功能。由于本系统不涉及大量的数据存储和复杂处理,FPGA的资源得不到充分利用,成本较高。
方案二:采用单片机MSP430F449实现整个系统的统一控制和数据处理。而单片机MSP430F449是一种16位超低功耗微处理器,具有丰富的片上外设和较强的运算能力,支持在线编程,使用十分方便,性价比高。故采用方案二。 2.信号增益控制及功率放大方案设计 方案一:采用三极管构成多级放大电路实现≥60dB的增益,并使用分立元件自行搭建后级功放。本方案成本低,但晶体管配对困难,电路设计复杂,增
[单片机]
STM32单片机GPIO口配置问题
在学习STM32F单片机时,我们常常困惑什么时候才能叫入门,采用什么样的教材入门,或者采用什么的编程软件。在学习类的教材中,以神州,原点教材布局很多,但是相信很多人看到这类教材也是一头雾水,需要你花费巨大的精力从寄存器的最底层去学习和了解,学习时间还是相对漫长。在采用的编程软件中,KEIL和IAR各有优势吧,在这里我选用的是KEIL。 在开始学习编程时,我采用的是库函数开发指南。在安装完成KEIL软件和添加项目工程时,就开始学习库函数编程。 在编写一个GPIO口控制时,首先我们要知道我们要实现的功能,连接的IO口和怎么配置GPIO口。最常见的以LED举例来说。比如我采用PB13引脚连接LED灯的负极,按照硬件的
[单片机]