程序无法仿真
时间:10-02
整理:3721RD
点击:
#include <stdio.h>
#include <stdlib.h>
#include <pic.h>
#include<math.h>
char Ua;char T;char T1;char T2;char COS;char N=0;
void CSH(void)
{
TRISA=0x01;
TRISC=0x06;
PORTB=0;
}
void delayms(int n)
{
int i;
for(i=n;i>0;i--);
}
void get_ad(void)
{
int v;
ADCON0=0x41;
ADCON1=0x8e;
ADIF=0;
ADIE=1;
GIE=1;
delayms(100);
GO=1;
while(ADIF==1);
v=ADRESH;
v=v<<8|ADRESL;
Ua=v/1023.0*5.0;
}
void ccp_u(void)
{
CCP1CON=0x05;
TMR1H=TMR1L=0;
T1CON=0x31;
PIR1=0;
CCP1IE=1;
INTCON=0xc0;
if(CCP1IF==1)
{
T1=(CCPR1H<<8)|CCPR1L;
CCP1IE=0;
CCP1IF=0;
}
}
void ccp_t(void)
{
CCP1CON=0x07;
TMR1H=TMR1L=0;
T1CON=0x31;
PIR1=0;
CCP1IE=1;
INTCON=0xc0;
if(CCP1IF==1)
{
T=(CCPR1H<<8)|CCPR1L;
T=T/16;
CCP1IE=0;
CCP1IF=0;
}
}
void ccp_i(void)
{
CCP2CON=0x05;
TMR1H=TMR1L=0;
T1CON=0x31;
PIR2=0;
CCP2IE=1;
INTCON=0xc0;
if(CCP2IF==1)
{
T2=(CCPR2H<<8)|CCPR2L;
CCP2IE=0;
CCP2IF=0;
}
}
void GLYS(void)
{
char a;
a=fabs(T1-T2);
for(a=a;a>=T;a=a-T)
{
COS=a/T;
}
}
void main(void)
{
void CSH();
while(1)
{
get_ad();
ccp_u();
ccp_t();
ccp_i();
GLYS();
if(Ua<=0.4)
{
if(COS<=0.9)
{
N=2*N+1;
}
PORTB=N;
}
仿真的时候没有达到想要的效果,如果B端口有输出至少应该有灯亮。不知道是接线有问题还是程序出错,用的是pic16f877
#include <stdlib.h>
#include <pic.h>
#include<math.h>
char Ua;char T;char T1;char T2;char COS;char N=0;
void CSH(void)
{
TRISA=0x01;
TRISC=0x06;
PORTB=0;
}
void delayms(int n)
{
int i;
for(i=n;i>0;i--);
}
void get_ad(void)
{
int v;
ADCON0=0x41;
ADCON1=0x8e;
ADIF=0;
ADIE=1;
GIE=1;
delayms(100);
GO=1;
while(ADIF==1);
v=ADRESH;
v=v<<8|ADRESL;
Ua=v/1023.0*5.0;
}
void ccp_u(void)
{
CCP1CON=0x05;
TMR1H=TMR1L=0;
T1CON=0x31;
PIR1=0;
CCP1IE=1;
INTCON=0xc0;
if(CCP1IF==1)
{
T1=(CCPR1H<<8)|CCPR1L;
CCP1IE=0;
CCP1IF=0;
}
}
void ccp_t(void)
{
CCP1CON=0x07;
TMR1H=TMR1L=0;
T1CON=0x31;
PIR1=0;
CCP1IE=1;
INTCON=0xc0;
if(CCP1IF==1)
{
T=(CCPR1H<<8)|CCPR1L;
T=T/16;
CCP1IE=0;
CCP1IF=0;
}
}
void ccp_i(void)
{
CCP2CON=0x05;
TMR1H=TMR1L=0;
T1CON=0x31;
PIR2=0;
CCP2IE=1;
INTCON=0xc0;
if(CCP2IF==1)
{
T2=(CCPR2H<<8)|CCPR2L;
CCP2IE=0;
CCP2IF=0;
}
}
void GLYS(void)
{
char a;
a=fabs(T1-T2);
for(a=a;a>=T;a=a-T)
{
COS=a/T;
}
}
void main(void)
{
void CSH();
while(1)
{
get_ad();
ccp_u();
ccp_t();
ccp_i();
GLYS();
if(Ua<=0.4)
{
if(COS<=0.9)
{
N=2*N+1;
}
PORTB=N;
}
仿真的时候没有达到想要的效果,如果B端口有输出至少应该有灯亮。不知道是接线有问题还是程序出错,用的是pic16f877
用的啥仿真器?
proteus仿真。。
谢谢,小编提供的场地。
MICROCHIP 原装正品,另有可替换单片机(无需修改PCB资料,程序可共用PIC的) 有用到的兄弟多多支持! 电话13430885511(微信同号),QQ2355910801