/*******************************************/
//功能:60倒计时,蜂鸣器以及数码管的使用
//开发板:PIC16F877
/*******************************************/
include
define uchar unsigned char
define uint unsigned int
void delay(uchar a,uchar x);
uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x00};//数组
uchar LED[3];
void init();//初始化函数
void interrupt TMRO();//TMRO中断函数
uint counter;
uchar tmro_counter;
void LED_DISP();//数码管的显示函数
main()
{
init();
counter=60;
while(1)
{
//counter=60;
LED[1]=(uchar)(counter/10);
LED[2]=(uchar)(counter%10);
LED_DISP();
//counter–;
//if(counter==0)
//RE0=1;
}
}
void init()
{
TRISC=0X00;
TRISA=0X00;
TRISD=0X00;
PORTD=0XFF;
TRISE=0x00;
RC5=0;
OPTION_REG=0X07;//256分频
TMR0=61;
INTCON=0Xa0;
}
void interrupt TMRO()
{
TMR0IF=0;
//TMR0=158;
tmro_counter++;
if(tmro_counter==20)
{
tmro_counter=0;
tmro_counter++;
counter–;
if(counter==0)
RE0=1;
}
TMR0=61;
}
void LED_DISP()
{
uchar timer=0;
uchar temp=0x80;
RA3=0;
//for(k=0;k<=50;k++)
for(timer=1;timer<=2;timer++)
{
RC4=1;
PORTD=temp;
RC4=0;
RC3=1;
PORTD=table[LED[timer]];
RC3=0;
temp>>=1;
delay(10,10);
RC4=1;
PORTD=0X00;
RC4=0;
delay(1,10);
}
}
/***********************
/*延迟函数***
/************************
void delay(uchar a,uchar x)
{
while(–a)
while(–x);
}
关键字:PIC单片机 定时器 16F877
引用地址:
PIC单片机定时器的使用(16F877)
推荐阅读最新更新时间:2024-03-16 16:06
使用STM32定时器进行输入脉冲的计数
STM32的定时器具有计数功能,在实际应用中可以用来对引脚上的输入信号进行统计。其输入信号作为计数时钟,输入引脚为ETR引脚。 本例程使用Timer 2,其ETR输入引脚为PA1,初始化是设置该引脚工作模式为输入模式,Timer2的工作模式为从模式。 为了方便测试,另外使用PC6模式输出一个时钟信号。测试时将PC6与PA1短接。(用户也可另外连接一个时钟信号到PA1引脚上。) 代码如下: int main(void) { unsigned char i_Loop; unsigned char n_Counter; #3366ff #ifdef DEBUG debug(); #3366ff #endif RC
[单片机]
ATmega 16 单片机的WDT定时器的相关寄存器(七)
1.WDTCR 看门狗定时器控制寄存器 WDTOE WDE WDP2 WDP1 WDP0 位 Res:保留位 ATmega16保留位,读操作返回值为零。 位 4 WDTOE:看门狗修改使能 清零WDE时必须置位WDTOE,否则不能禁止看门狗。一旦置位,硬件将在紧接的4个时钟周期之后将其清零。 位 3 WDE:使能看门狗 WDE为 1 时,看门狗使能,否则看门狗将被禁止。只有在WDTOE为 1 时WDE才能清零。以下为关闭看门狗的步骤: (1).在同一个指令内对WDTOE和WDE写 1 ,即使WDE已经为 1 (2).在紧接的4个时钟周期之内对WDE写 0 位 WDP2,
[单片机]
基于PIC单片机设计的RLC智能测量仪
在使用电子元器件时,首先需要了解其参数,这就要求能够对元器件的参数进行精确测量。采用传统的仪表进行测量时,首先要从电路板上焊开器件,再根据元件的类型,手动选择量程档位进行测量,这样不仅麻烦而且破坏了电路板的美观。经过理论分析和实验研究,采用正交采样算法,并由单片机控制实现在线测量、智能识别、量程自动转换等多种功能,可大大提高测量仪的测量速度和精度,扩大测量范围。因此这种RLC测量仪既可改善系统测量的性能,又保持了印刷电路的美观,较传统的测量仪还具有高度的智能化和功能的集成化,在未来的应用中将具有广阔的前景。 1 硬件电路设计 此测量仪硬件设计思路如图1所示。 由于PIC单片机只能正确采集0~5 V之间的电压,而输入的信
[单片机]
51定时器用T0和T1共同控制产生精确的PWM波形例程
#include sbit P1_1 = P1^1; //定时器初始化 void InitTimer(void) { TMOD = 0x11; EA = 1; ET0 = 1; ET1 = 1; //开启T0和T1的中断 TH1 = 0xd8; TL1 = 0xf0; //定义10ms TH0 = 0xF8; TL0 = 0x30; //定义2ms TR0 = 1; TR1 = 1; //开启定时器0和1 P1_1 = 1; } //T0的中断服务程序 void T0ISR(void) interrupt 1 using 1 { P1_1 = 0; TR0 = 0; TH0 = 0xF8; TL0 = 0x30; //定义
[单片机]
51单片机~定时器和外部中断(各个位控制作用详解)
(一)中断 (二)定时器,计数器中断 TL0低八位先进行存储,达到0XF,向上进一,直到高低八位都满时就可以产生中断或者控制TF0口。 (1). TMOD低四位控制T0,高四位控制T1。 GATE:(门控位) (2)控制寄存器TCON:(低四位控制外部中断,高四位控制计数器启动和中断申请) (3)定时器的四种工作方式: 定时器开启工作原理: 四种工作方式:(机器周期(脉冲)和T0引脚来绝定电路触发) 区别在于TH0和TL0的位数和输出) 常用1和2 1. 2.用于比较精确的脉冲信号发射器: 3. 程序化步奏: 计算:初值==2^n-N(公式要根据你使用那种方式0.1
[单片机]
PIC 定时器中断1+外部中断0
PIC 的八位单片机只有一个中断入口(16位和32位的单片机就有多个)也就只能在程序里只能有一个中断子函数。如果开了两个或更多的中断那就把两个中断的处理都放在这一个中断子函数中 效果:让数码管连续循环显示0~9,当有外部中断产生时,显示暂停5~7秒 这里外部中断0属于高优先级,定时器中断1是外设中断系统,属于低优先级。在这里,外部中断的优先级必须比定时器中断的优先级高,不然在定时时无法对其产生相应的外部中断来控制它停止。 #include __CONFIG(1,XT) ; //晶振为外部4M __CONFIG(2,WDTDIS) ; //看门狗关闭 __CONFIG(4,LVPDIS) ;
[单片机]
Systick滴答定时器-延时函数
1、参考资料 《STM32F1开发指南-库函数版本》-5.1小节 delay文件夹介绍 《Cortex-M3权威指南-中文》-第8章最后一个小节:Systick定时器 2、Systick定时器 Systick定时器,是一个简单的定时器,对于CM3,CM4内核芯片,都有Systick定时器。 Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。 比如UCOS中,分时复用,需要一个最小的时间戳,一般在STM32+UCOS系统中,都采用Systick做UCOS心跳时钟。 Systick定时器就是系统滴答定时器,一个2
[单片机]