完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #include #include 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 |
|
相关推荐
4个回答
|
|
用的啥仿真器??
|
|
|
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
求解外围电路实现的是4脚给持续低电平复位并正常工作,高电平不工作的原因
1917 浏览 1 评论
2974 浏览 3 评论
PIC1946程序有一个变量在运行过程中恢复初始值其他变量保持不变
2172 浏览 2 评论
2542 浏览 0 评论
PIC16F1825的RC5引脚,在主程序中操作无效,在中断中可以改变是为什么?
3660 浏览 5 评论
630浏览 0评论
用XC8编译PIC18F25K80时提示下面Error,求怎么解决这个问题
1736浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 23:55 , Processed in 1.335769 second(s), Total 85, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号