网站大量收购独家精品文档,联系QQ:2885784924
  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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,ECCFn ECOMn 比较器使能 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)

xiaoxue8 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档