- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
pca程末序
一
PCA 输出脉冲的程序
#includereg51.h#includeintrins.h#define uchar unsigned char#define uint unsigned int#define FOSCsbit EPCAI=IE^6;sfr CCON=0xD8;sbit CCF0=CCON^0;sbit CCF1=CCON^1;sbit CR=CCON^6;sbit CF=CCON^7;sfr CMOD=0xD9;sfr CL=0xE9;sfr CH=0xF9;sfr CCAPM0=0xDA; sfr CCAP0L=0xEA;sfr CCAP0H=0xFA;sbit ENA=P1^7;sbit clk=P3^5;unsigned long num,num1;bit flag;void main(){ENA=1;CCON=0;CL=0;CH=0;CMOD=0x02;num=200;CCAP0L=0-num;CCAP0H=0-num;// num+=T100Hz;CCAPM0=0x49;CR=1;EPCAI=1;EA=1;num1=0; while(1);}void PCA_isr() interrupt 7{static int aa=1;CCF0=0;CL=0;CH=0;aa++;if((aa=500)(num=254)){aa=0;num++;if(num=254){CCAP0L=0-num;CCAP0H=0-num;}else{num=255;}}clk=~clk;}
二|高手们帮忙看下哪里错了(关于STC的PCA高速模式输入40kHz方波的程序)主程序的意图是发送40kHz方波的10个脉冲之后停止,在PCA中断程序中采用了整型count变量来计数,在主程序中判断是否到达20后,停止PCA发送脉冲。运行时发现在主程序判断count变量时到达20,也不执行PCA停止命令,这该怎么修改?请各位大侠们指教指教啊,谢谢。void pca_init(void) //PWM初始化 高速模式 fosc=32MHz{CMOD =0x02; //设置PCA定时器,空闲模式下停止PCA计数, 时钟源f/2,禁止PCA计数器溢出中断CCON= 0x00; //禁止PCA计数器工作,清除中断标志-溢出标志CCON=PCA模块中断标志CL = 0x00; //PCA计数器低8位,清计数器CH = 0x00; //PCA计数器高8位CCAPM0 = 0x4D; /* PWM 高速方波输出 7 6 5 4 3 2 1 0 //禁止引脚翻转ECOMn,CAPPn,CAPNn,MATn,TOGn,PWMn,ECCFnECOMn 比较器使能 CAPPn 正捕获 CAPNn 负捕获MATn 匹配,=1置位CCFn TOGn=1翻转引脚 PWMn=1脉冲调节输出 ECCFn=1使能CCFn中断*/CCAP0L=0xC8; //输出为40K方波CCAP0H=0x00; //IP = 0x40; //PCA中断唯一优先IPH = 0x40;EPCA_LVD=1; //开PCA中断CR = 1; //PCA计数器EA = 1;}void pca_fast() interrupt 6 //超声波发射40KHz方波{count++; CCF1=0;if(CCAP0L=(255-CCAP0L_Value)) CCAP0L= CCAP0L+CCAP0L_Value; else CCAP0L=CCAP0L_Value-(256-CCAP0L);if (CCAP0H255) CCAP0H++;else CCAP0H=0;}void main(void){ pca_init(); //PCA初始化while(1){if(count==20){CR=0;} }}EPCA_LVD=1; //开PCA中断////////////////////////////////////这句好像不对,CR = 1; //PCA计数器EA = 1;////////////////////////////////////这两句换一下顺序比较好}void pca_fast() interrupt 6 //超声波发射40KHz方波////////////////////中断查询号为7{count++; CCF1=0;//////////////////////////////////应该是CCF0=0;if(CCAP0L=(255-CCAP0L_
文档评论(0)