微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC单片机入门之定时器查询闪灯程序

PIC单片机入门之定时器查询闪灯程序

时间:11-24 来源:互联网 点击:
上一篇文章写了PIC最基本得入门的闪灯程序,通过这个程序而欧美可以看到我们的单片机的确开始按照我们的程序工作了,今天我们开始使用单片机里面的一个定时器的资源,即就是PIC里面的定时器,通过查询定时器是否计时到我们规定的值来决定我们是否要做什么事!

PIC里面有3个定时器,比起51单片机多了一个定时器(哈哈)!分别为Timer0,Timer1,Timer2.分别说说每一个定时器吧:

Timer0是一个8为定时器,与看门狗公用一个8位预分配频器,时钟源可以选择位内部时钟和外部时钟,通过设置OPTION_REG寄存器的PS<2:0>位的值可以选择不同的预分频比,根据选择的预分频比和系统震荡频率就可以计时定时了。

Timer1是一个16位的计时器,有一个3位预分频器,也就是意味着最多实现1:8的分频比,(随便说一下,要实现比较精确的定时的话,最好选择小一点的预分频比,最好是不分频),Timer1也可以选择内部或者是外部时钟。

Timer2是一个8为定时器,至今没用过Timer2,感觉还是Timer1用的比较舒服。

下面贴上最基本得Timer0的定时器查询的闪灯程序,程序计时0.5秒灯闪一次。

#include

;程序采用可重定位的汇编编写

udata_shr

L1 res 1h ;为变量L1分配一个字节地址

reset code 0x0 ;程序开始地址

pagesel main

goto main

code

main

NOP

BANKSEL PORTA ;配置PORTA端口

CLRF PORTA

BANKSEL ANSEL ;端口PORTA为数字端口模式

CLRF ANSEL

BANKSEL TRISA

MOVLW B00000000

MOVWF TRISA ;PORTA所有位为输出

BANKSEL OPTION_REG

MOVLW B11000100

MOVWF OPTION_REG ;配置Timer0预分频为32分频

BANKSEL PORTA

INITTMR0

BCF INTCON,T0IF

MOVLW d61 ;设置外面套的循环次数

MOVWF L1

LOOP

BTFSS INTCON,T0IF

GOTO LOOP

BCF INTCON,T0IF

DECFSZ L1,f ;外面套的循环

GOTO LOOP

MOVLW B00000001

XORWF PORTA,f ;取反RA0,让LED闪烁

GOTO INITTMR0

END

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top