Ⅰ PIC单片机c语言中如何喂狗
首先你要说明你用的是哪款PIC的单片机和用哪个C编译器。
PIC有中低端的八位单片机PIC10/12/16的,高端的八位单片机PIC18系列,1十六位单片机PIC24和dsPIC,还有一个PIC32是三十二位的。上述的都可以通过调用宏指令CLRWDT();来实现喂狗。
但他们的宏指令的声明一般都是在各自的头文件中,比如根据他们的数据手册PIC10/12/16系列的宏指令声明都在htc.h文件中,pic.h里我还没试过。
而PIC18我用过的是MPLAB C18编译器,其声明宏指令的头文件是这个芯片的名称,如PIC18F4680.h。
而PIC24我用的是MPLAB C30编译器我是直接根据数据手册的要求在C文件里定义宏的:
#define ClrWdt() {__asm__ volatile ("clrwdt");}
而前面的八位单片机的C语言也可以用下列嵌入汇编的方法: asm("CLRWDT");
Ⅱ 单片机指令周期的计算
计算方法:PIC单片机的每四个时钟周期为一个内部指令周期,例如:8MHz的晶振,则内部指令周期为1/(8/4)= 0.5 uS
实例一:35us, 8MHz的晶振, 8位定时器, 分频比1/2 , 初值 E4
实例二:156.25us , 32768Hz的晶振, 8位定时器, 分频比1/32 , 初值 FC
计算方法一: 35 = =(256-初值)*分频*4/晶振 + 14/分频 =(256-初值)+14/2
计算方法二:0.015625 =(256-初值)*分频*4/晶振 = (256-初值)*32*4/32768
特别注意:分频比1-8 需要加上一个14/分频
指令周期是指令周期执行某一条指令所消耗的时间,它等于机器周期的整数倍。传统的80C51单片机的指令周期大多数是单周期指令,也就是指令周期=机器周期,少部分是双周期指令。
(2)单片机pic喂狗时间计算扩展阅读
在MCS-51系统中,有单周期指令,双周期指令。四周期指令只有乘,除两条指令。指令的运算速度和它的机器周期直接相关,机器周期数较小则执行速度快。
在编程时要注意选用具有同样功能而机器周期数小的指令。每一条指令的执行都可以包括取指和执行两个阶段。在取指阶段,CPU从内部或者外部ROM中取出指令操作码及操作数,然后再执行这条指令。
在8051指令系统中,根据各种操作的繁简程度,其指令可由单字节,双字节和三字节组成。从机器执行指令的速度看,单字节和双字节指令都可能是单周期或双周期,
而三字节指令都是双周期,只有乘,除指令占四个周期,一条指令的字节数表征这条指令在存储器中所占空间大小,而周期数表征运行这条指令所花时间长短,即运行速度。