pic timer1定时器

本文介绍了一个使用PIC16-MCD2开发板和MPLAB 8.2环境实现LED灯循环闪烁的程序示例。通过配置定时器Timer1实现延时功能,使得LED灯能够依次点亮并熄灭,形成循环闪烁的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*22-11-09 20:17
功能;通过Timer1延时实现led灯的循环闪烁
要求:MPLAB 8.2以上,MEO工程板一块,PIC16-MCD2 仿真下载,
芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,4MXT模式振荡
*/
#include<pic18.h>

int main()
{
    TRISC = 0x00;    //c端口定义为 输出
    PORTC = 0x00;    //全部熄灭
    TMR1CS = 1;     //T1CON<1> 将timer1配置位定时器
    T1CON  = 0xb0;   //1011 0000 配置位一次16位对Timer1寄存器进行读写 1:8预分频
    TMR1 = 0;     //TMR1赋初值 定时器的定时值清零
    TMR1ON = 1;  // 使能计时器
    while (1)
    {
          for (int i=0; i<8; i++)
          {
              PORTC = 0x01;       //第一个灯亮
              PORTC = PORTC>>1;   //右移一位
              if (TMR1IF == 1)  //产生中断,溢出
              {
                   TMR1IF = 0;  //清溢出
                   TMR1 = 0;      //TMR1赋初值 定时器的定时值清零
                   PORTD = 0x00; //全熄灭
              }
          }
    }
}

IST P=16C73 INCLUDE "P16C73.INC" CBLOCK 30H LAY1,LAY2,LAY3,RAM ENDC ORG 00H INC CLRF PORTB CLRF PORTC BSF STATUS,5 CLRF PORTC CLRF PORTB BCF STATUS,5 ;**************************TMR1初始化************************** BSF STATUS,5 MOVLW 00H MOVWF PIE1 ;关TMR1中断 BCF STATUS,5 MOVLW 00H MOVWF T1CON ;设TMR1分频为11内部时钟,关TMR1 BCF INTCON,7 ;关总中断 MOVLW 00H ;0DFH 和0B1H 是20HZ, MOVWF TMR1L MOVLW 00H ; MOVWF TMR1H ;设初值为FFF6,就是100KHZ BCF PIR1,0 ;清TMR1标志位 BSF INTCON,6 ;开外设中断 BSF INTCON,7 ;开总中断 BSF T1CON,0 ;启动TMR1 GOTO MAIN ;***************************************************************** MAIN MOVLW 0FFH MOVWF PORTC CALL LAY1S ; 灯亮1S MOVLW 00H MOVWF PORTC CALL LAY2S ; 灯暗2S BTFSS PIR1,TMR1IF GOTO $ ; 等到溢出 MOVLW 0FFH MOVWF PORTC CALL LAY2S ;亮2S ;************************TMR1初始化********************************* MOVLW 00H MOVWF T1CON ;设TMR1分频为11内部时钟,关TMR1 BCF INTCON,GIE ;关总中断 MOVLW 00H MOVWF PORTC CALL LAY2S ;暗2S MOVLW 0FEH ;0DFH 和0B1H 是20HZ, MOVWF TMR1L MOVLW 0FFH MOVWF TMR1H ;设初值为FFF6,就是100KHZ BCF PIR1,TMR1IF ;清TMR1标志位 BSF INTCON,PEIE ;开外设中断 BSF INTCON,GIE ;开总中断 BSF T1CON,TMR1ON ;启动TMR1 ;******************************************************************** AA BTFSS PIR1,TMR1IF ; 判断有没有溢出 GOTO $-1 ;ON COMF PORTC ;YES GOTO AA LAY1S MOVLW 037H MOVWF LAY3 MOVLW 0F0H MOVWF LAY1 MOVLW 018H MOVWF LAY2 DECFSZ LAY2 GOTO $-1 DECFSZ LAY1 GOTO $-5 DECFSZ LAY3 GOTO $-9 RETURN LAY2S MOVLW 069H MOVWF LAY3 MOVLW 0F0H MOVWF LAY1 MOVLW 018H MOVWF LAY2 DECFSZ LAY2 GOTO $-1 DECFSZ LAY1 GOTO $-5 DECFSZ LAY3 GOTO $-9 RETURN END
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值