本帖最后由 dlmudu 于 2016-1-5 16:07 编辑
用PIC16f690做一个继电器控制程序,程序写进去了,但是不工作,大家给我分析一下这里是部分程序:
#include <pic.h>
__CONFIG(0x3b2a); //XT,MCLR,CP,CPD,保护
#define uchar unsigned char
#define uint unsigned int
#define ulint unsigned long
#define _XTAL_FREQ 4000000 // 4M晶振数值
void init(void)
{
ANSEL = 0x00;
ANSELH = 0x00; //数字量输入
TRISA|=0x04; //RA口,RA2输入,其他为特殊端口不设置
TRISA&=0x04;
TRISB|=0x00; //RB口为输出口
TRISB&=0x00;
//WPUB=0xff; //使能RB所有口的内部弱上拉功能。
TRISC|=0xff; //RC口为输入端
TRISC&=0xff;
T0CS=0; //给Timer0选择内部指令周期计数,即将它设置为定时器功能。此时Timer0也开始工作了。
PSA=0; //将预分频器分配给Timer0.
PS2=0; //分频比设置为16.则在4M晶振下,Timer0一个中断周期为4096us。
PS1=1;
PS0=1;
T0IE=1; //允许Timer0中断
PEIE=1; //允许所有未被屏蔽的外设中断
GIE=1; //允许全局中断
WDTPS3=0; //设置看门狗分频是2048
WDTPS2=1;
WDTPS1=1;
WDTPS0=0;
// PORTC=0xff;
}
void main(void)
{
init();
while(1)
{
asm("clrwdt");
if(RC5==0)
RB4=0;
else
RB4=1;
}
}
这里是硬件电路
|