电路很简单,我就不画图了,四位数码管 通过2个74hc595连起来,1个595负责段选,1个595负责位选,利用单片机的定时器中断实现0-100数字的循环显示.程序已经通过本人测试通过
#include
#define uint unsigned int
#define uchar unsigned char
sbit rck=P0^0;
sbit sck=P0^1;
sbit si=P0^2;
uchar num[]={0x80,0xed,0x42,0x48,0x2c,0x18,0x10,0xcc,0x00,0x08};
uint b=0,i=0,j=0,k;
void write_595(uchar x)//对595芯片进行设初始化
{
for(k=0;k<8;k++) //移位寄存器
{
x>>=1;
sck=0;
si=CY;
sck=1;
}
}
void date_danpianji()//对单片机计时器进行初始化
{
EA=1;//总中断开启
ET1=1;//定时器开启
TMOD=0X10;//选择定时器工作模式
TH1=(65536-33333)/256;//除整赋给高八位
TL1=(65536-33333)%256;//除余赋给第八位
TR1=1; //启动定时器
}
void main()//主函数
{
date_danpianji();//调用定时器中断
while(1)//循环
{
if(b==20)//检测中断函数是否满足b==20,如果满足则执行
{
b=0;
i++;
if(i==10)
{
i=0;
j++;
if(j==10)j=0;
}
}
write_595(num[j]);
write_595(num[i]);
rck=0;
rck=1;
}
}
void ext() interrupt 3 using 1 //定时器中断
{
TH1=(65536-33333)/256;
TL1=(65536-33333)%256;
b++;
}
关键字:定时器中断 0~100秒
引用地址:
定时器中断0~100秒
推荐阅读最新更新时间:2024-03-16 14:26
AVR定时器T1中断示例程序
AVR定时器T1中断示例程序使用AVR的定时器T1做1S定时,并使用PD口的 LED 指示灯做简单指示。 #include iom16v.h #include macros.h #define DISP_DDR DDRD #define DISP_PORT PORTD /*----------------------------------------------------------------- 程序名称:定时器1初始化程序 程序功能: 注意事项:基于7.3728M 晶振 提示说明:晶振不要买到假的,要不然,调不出来还以为电脑有鬼! 输 入: 返
[单片机]
C51单片机学习(二):中断系统和定时器
中断系统: 中断概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。 中断的结构图 其中一些说明: 1、(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降 沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时, 中断标志IE0(TCON.1)置1,向CPU申请中断。 2、(P3.3)可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中
[单片机]
51单片机 定时器0中断实现1秒LED流水灯
使用定时器0中断实现LED1秒的流水灯 #include reg52.h typedef unsigned int u16; typedef unsigned char u8; u8 code LED ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; u16 time,i; void timer0init() { TMOD=0x01; ET0=1; EA=1; TR0=1; TH0=(65536-50000)/256; TL0=(65536-50000)%256; } void main() { timer0init(); wh
[单片机]
定时器计数、定时器中断函数、while(1)之间如何协调、工作?
51单片机程序,使用定时器时,定时器计数、定时器中断函数、while(1)循环三者之间如何协调好整个流程? 我拿一个最经典的单片机应用——‘流水灯’来分析吧。 【定时器0实现间隔1s的流水灯】简单示例 #include reg52.h typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; #define LED P3 bit LED_flag=0; //定时到1s的标志位 u8 n; //循环变量,用作LED总线的位索引index void InitTimer0(void); //定时器0,初始化 void mai
[单片机]
单片机:中断及定时器工作
一、中断 1、中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断产生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A中断的地方继续处理事件A(中断返回),这一过程称为中断。 引起CPU中断的根源叫做中断源。 中断源向CPU的请求,叫做中断请求。 CPU暂时中断原来的事件A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。 实现上述中断功能的部件称为中断系统(中断机构) 2、中断响应优先级及中断服务程序入口表 3、中断优点 分时操作。CPU可以分时为多个I/O设备服务,
[单片机]
STM32学习笔记一一定时器中断
1.STM32 通用定时器简介 STM32 的通用定时器是一个通过可编程预分频器( PSC)驱动的 16 位自动装载计数器( CNT)构成。使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。 STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。 TIMER主要是由三部分组成: 时基单元; 输入捕获;输出比较。 2.ST32 的通用定时器功能 通用定时器有TIMx (TIM2、 TIM3、 TIM4 和 TIM5),具体功能如下: 1)16 位向上、向下、向上/向下自动装载计数器( TIMx_CNT); 2)16 位可编程(可以实时修改)预分频
[单片机]
STM32定时器的分类及中断原理
本文主要介绍常规定时器中的TIM3,实现定时器中断的功能。STM32定时器的分类在其中一篇文章中已经介绍过,本文主要内容主要介绍定时器的基础功能-定时器中断,对于STM32定时器分类简单复习一下。 一、STM32定时器的分类 1.1 按照内核、外核、特定、常规分为4大类: 1)内核定时器:Systick 2)外设定时器:特定应用定时器+常规定时器 3)特定应用定时器:LPTIM,RTC,WTD,HRTIM 4)常规定时器:基本定时器TIM6&TIM7)、通用定时器(TIM2TIM5,TIM9TIM14)、高级定时器(TIM1&TIM8) 1.2 CPU时序 此处我们提一下学习单片机原理的课程时,提到的几个CPU时序。
[单片机]
PIC单片及定时器溢出中断的设计思路及程序设计
1.设计思路 PIC16F87系列单片机的定时/计数器0是一个8位的简单增量溢出计数器。时钟源可以是内部系统时钟(Fosc/4),也可以是外部时钟。为了扩大定时或计数范围,在定时/计数器0中设计了一个可编程预分频器。当TMR0内部计数器计数从FFH跳到OOH时,发生计数溢出,置位TOIF(INTCON的D2),向CPU申请中断。 RB0/INT引脚上的外部中断由边沿触发,既可以是上升沿,也可以是下降沿,当寄存器OPTION_REG的INTEDG位为1时,选择上升沿触发;为0时选择下降沿触发。一旦检测到引脚上出现有效边沿,就将INTF位INTCON的D1置1。 本例中同时允许定时器0中断和外部INT中断。在程序执行过程中
[单片机]