完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
具体问题是这样的。一开始给STC12C5A60S2 P3.0口一个高电平。然后STC12C5A60S2 P1.3口自动输出一个占空比40%的PWM波。再然后给P1.3口一个低电平,此时要求STC12C5A60S2 的P1.3口自动输出1s的60%占空比的PWM波,1s时间到了之后拉低P1.3口电平,我尝试写了下程序,总是不能成功实现。求哪位大神帮忙看看啊
#include #include "delay.h" #define FOSC 18432000L //Declare SFR associated with the PCA 声明与PCA相关联的SFR sfr CCON = 0xD8; //PCA control register PCA控制寄存器 ***it CCF0 = CCON^0; //PCA module-0 interrupt flag PCA模块0中断标志 ***it CCF1 = CCON^1; //PCA module-1 interrupt flag PCA模块1中断标志 ***it CR = CCON^6; //PCA timer run control bit PCA定时器运行控制位 ***it CF = CCON^7; //PCA timer overflow flag PCA定时器溢出标志 sfr CMOD = 0xD9; //PCA mode register PCA模式寄存器 sfr CL = 0xE9; //PCA base timer LOW PCA基定时器低 sfr CH = 0xF9; //PCA base timer HIGH PCA基定时器高 sfr CCAPM0 = 0xDA; //PCA module-0 mode register PCA模块0模式寄存器 sfr CCAP0L = 0xEA; //PCA module-0 capture register LOW PCA模块0捕捉寄存器低 sfr CCAP0H = 0xFA; //PCA module-0 capture register HIGH PCA模块0捕捉寄存器高 sfr CCAPM1 = 0xDB; //PCA module-1 mode register PCA模块1模式寄存器 sfr CCAP1L = 0xEB; //PCA module-1 capture register LOW PCA模块1捕捉寄存器低 sfr CCAP1H = 0xFB; //PCA module-1 capture register HIGH PCA模块1捕捉寄存器高 sfr PCAPWM0 = 0xf2; sfr PCAPWM1 = 0xf3; ***it P30 = P3^0; void main() { CCON=0; CL=0; CH=0; CMOD=0x02; CCAP0H=CCAP0L=0x60; CCAPM0=0X42; CR=1; loop:if (P30==1) { goto loop; } else { CCON=0; CL=0; CH=0; CMOD=0x02; CCAP0H=CCAP0L=0xA0; CCAPM0=0X42; CCAP1H=CCAP1L=0xff; PCAPWM1=0x03; CCAPM1=0X42; CR=1; } delay(1000); CCON=0; CL=0; CH=0; CMOD=0x02; CCAP0H=CCAP0L=0x80; CCAPM0=0X42; CR=1; } |
|
相关推荐
12个回答
|
|
|
哦,程序的最后我写的是输出50%的占空比的pwm波,拉低的没写,总之是运行不出来的。期望大神帮我调试一下程序
|
|
|
|
|
|
描述的不够清楚哦 |
|
|
|
|
|
一开始给STC12C5A60S2 P3.0口一个高电平。然后STC12C5A60S2 P1.3口自动输出一个占空比40%的PWM波。????P1.3是输入还是输出?
|
|
|
|
|
langzitianya 发表于 2016-4-20 07:05 P1.3口是输出PWM波形 |
|
|
|
|
|
首先让STC12C5A60S2的p1.3口输出一个占空为40%的PWM波,然后单片机实时监测P3.0口电平(一开始P3.0口是高电平),当P3.0口电平由高变低后,STC12C5A60S2的P1.3口输出占空比为60%的PWM波,而且只输出1s的时间,1秒时间到了之后就停止输出PWM波(或者让P1.3口输出低电平也可以)。我现在编写的程序可以实现一开始的40%的pwm输出,当检测到p3.0口低电平后也可以输出1s的60%pwm波,但是1s过后怎么也实现不了P1.3口的pwm关闭或者拉低。求大神帮我看下程序到底错在哪里了。我回去后又用汇编编写了一遍,也贴在这里吧 |
|
|
|
|
陈凤林 发表于 2016-4-20 18:29 不好意思 彙編早忘了 但是按你說的情況的話 1秒时间到了之后就停止输出PWM波應該不難做到,關鍵就是1S定時 時間到了關掉P1.3口輸出即可 你指的:当检测到p3.0口低电平后也可以输出1s的60%pwm波,但是1s过后怎么也实现不了P1.3口的pwm关闭或者拉低 ,意思是1s过后 60%pwm波還在輸出? |
|
|
|
|
|
本帖最后由 langzitianya 于 2016-4-20 22:18 编辑
我没时间查手册了 ,我做过相关的东西,你先把pwm停掉,有这个寄存器“***it CR = CCON^6; //PCA timer run control bit PCA定时器运行控制位”,然后给P1.3一个低电平就可以了。你先用测试能停止,能了再控制这个端口,记住要先停止然后拉低。我刚才看了一下引脚图好像P1.3不是pwm的输出引脚呢? |
|
|
|
|
逸興遄飛 发表于 2016-4-20 19:01 是的,就是关不掉,60%的pwm还在输出,clr cr和MOV CCON,#0这两个语句我都试过了,就是关闭不了。不知道原因在哪 |
|
|
|
|
langzitianya 发表于 2016-4-20 22:07 clr cr和MOV CCON,#0这两个语句我都试过了,就是关闭不了。不知道原因在哪 |
|
|
|
|
|
CCON=0;这样看看行不,还有你仔细看看有关的寄存器,能启动就能关闭。
|
|
|
|
|
|
CCApM0=0;CCApM0=0;
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16902 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 12:26 , Processed in 0.952145 second(s), Total 94, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3602