一、 时钟(机器周期)&指令周期
时钟频率:外部晶振/陶振/RC振荡器或内部RC振荡器的频率。
指令周期:执行一条普通指令(比如加减,左右移,不包括乘除法)所需时间
① 51单片机 :12个时钟周期 = 1个指令周期
例:外部晶振12M,则1个指令周期 = 1us
②pic单片机:
pic12/pic16/pic18系列:4个时钟周期 = 1个指令周期
dsPIC系列:2个时钟周期 = 1个指令周期
二、 定时器/计数器(pic12/16/18)
Timer0: 8位定时器/计数器
定时器模式:
① 预分频(例如:预分频比1:2,则每2个指令周期Timer0递增)
② TIMR0中断:Timer0从FF溢出到00时产生中断,中断标志位
TMR0IF置1(需要软件清零)
应用:比如要产生一个100us的时间中断(晶振4M),赋值TMR0 = 0x00
特别注意:TIMER0有2个指令周期的DELAY,所以TMR0 = 0x9E !
计数器模式:
① 预分频
② 上升/下降沿选择
应用:捕捉外部PWM的脉冲数量,达到一定数量的脉冲后溢出产生中断
Timer1:带门控的16位定时器/计数器
1. 可编程外部或内部时钟源
2. 多个Timer1门控源
3. 。。。。。。
三、 模数转换ADC模块(pic单片机自带)
1. 参考电压
例:单片机采样一个0-2V的模拟量
参考电压:4.096V(10位AD),那么2V电压对应:
(2/4.096)*1024 = 500.
4.096V 1024
2. 转换时钟
可通过设定相应寄存器选择时钟源 Fosc/2,Fosc/4…… 4M
Tad:完成一个位的转换所需时间,10位全部完成需要11.5Tad
3. 分辨率
假如基准电压是5V,10位AD。分辨率 = 5/1024 V
4. ADC中断
5. ADC转换格式
四、 I/O端口()pic
1. TRIS:方向选择寄存器
2. ANSEL:模数选择寄存器
3. WPU:内部弱上拉寄存器
五、 配置字
六、 实例操作: 采样I/O端口RC6的电压, 当
检测到的电压值超过2V时, LED灯以200ms时间间隔闪烁,检测电压低于2V时LED常亮。
需要用到CPU资源:
1. 时钟
2. Timer0
3. AD转换模块
4. I/O相应功能