完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
定义XTAL_FREQ 20MHZ/*MHz*//包括包括包括和包括图片16f628a16f628a.h>,包括包括包括和包括xc.h>\\\x1616161616f16f628a.16f628a.h.h>>\\包括包括包括包括“延迟.h”,包括“延迟.h“\\xxxc.xc.xc.xc.h”\\\**********b**********************************************************************************************************************//CON.#pragma config FOSC=HS//振荡器选择位(HS振荡器:RA6/OSC2/CLKOUT和RA7/OSC1/CLKIN上的高速晶体/谐振器)#pragma配置WDTE=OFF//看门狗定时器启用位(WDT禁用)#pragma配置PWRTE=OFF//上电定时器启用位(PWRT禁用)#pragma配置MCLRE=ON//RA5/MCLR/VPP引脚功能选择位(RA5/MCLR/VPP引脚功能是MCLR)#pragma配置BOREN=OFF//褐色检测启用位(BOD禁用)#pragma配置LVP=OFF//低伏ge编程使能位(RB4/PGM管脚具有数字I/O功能,MCLR上的HV必须用于编程)#pragma配置CPD=OFF//Data EE存储器代码保护位(数据存储器代码保护关闭)#pragma配置CP=OFF//Flash程序存储器代码保护位(代码保护关闭)无效系统em_init(void){TRISA=0X00;PORTA=0X00;CMCON=0X00;CMCON=0X07;TRISB=0b00000000011;TRISB=0b00000000000011;PORTB=0b00000000000011;PORTB=0b00000000000011;CCP1CON=0b00000000000000000011;CCP1CON=00000000000000111;CCP1CON=00000000000111;CCP1CON=0000101101101101101101101101101101101101101101101101101101101101;//PWM周期:20uSec(50kHz 50kHz)202020uSec(50kHz 50kHz)T2CON(50kHz)202020l2=1;led_r1=1;led_r2=1;而(1){dim_level=249;DelayMs(100);dim_level=50;DelayMs(100);}}这是我的代码……我想切换LED,也想控制PWM……但是当我在硬件中执行此代码时,意味着PWM工作正常,但是PORTA管脚不工作……它不切换到任何条件……
|
|
相关推荐
19个回答
|
|
|
您已经达到了臭名昭著的RMW(读-修改-写)效果。移到更新的PIC(PIC16F1xx)将完全避免这个问题。尝试在每条指令改变PORTA引脚之前插入NOP。
|
|
|
|
|
|
LedioL1=1;nop-();LedioL2=1;nop-();LedioR1=1;nop-();LedioR2=1;nop-();
|
|
|
|
|
|
为了让自己相信LED是好的,尝试更换,也改变:只是:
|
|
|
|
|
|
可以添加更多的NOP();s以适当地放电内部电容器。led_l1=1;NOP();NOP();NOP();NOP();NOP();led_l2=1;NOP();NOP();NOP();NOP();NOP();led_r1=1;NOP();NOP();NOP();led_r2=1;NOP();NOP();NOP();
|
|
|
|
|
|
对。如果你试图通过LED拉太多电流,它可能不起作用。你使用的是哪种电阻串联电阻?你使用的电源电压是多少?
|
|
|
|
|
|
函数的用法是什么?
|
|
|
|
|
|
它给出了一个小的延迟,这使您更改的最后一个管脚有更多的时间到达您切换到的新状态。搜索本论坛的任何数千个参考资料以了解在使用旧PIC16F芯片时端口上的读-修改-写问题。
|
|
|
|
|
|
NOP()(意思是没有操作)是微小的延迟,这相当于MCU时钟上的指令循环。只是为了释放内部电容。您可以在linkhttp://tutorialsmax.com/pic16f628a-basics/或Datasheet下面深入查看--Karan。
|
|
|
|
|
|
也就是FYI。如果您没有放电内部电容器I/O引脚可能无法正常工作。
|
|
|
|
|
|
DC5V和330欧姆跨PIC单片机引脚和LED
|
|
|
|
|
|
如果我需要输入任何IO引脚在MCU意味着电阻值也相当大…
|
|
|
|
|
|
即LED的限流电阻。用简单欧姆定律。
|
|
|
|
|
|
你必须使用PIC16F628 A吗?如果你想继续使用18引脚PIC16F设备,PIC16F1826与PIC16F628A价格相同,引脚兼容,功能更强大。它具有LATx寄存器,完全避免了这个问题。(它也可以运行在32MHz以上,不需要外部晶体。)
|
|
|
|
|
|
嗯,我注意到,早在11月份,您就听说过三件事,您似乎忽略了.http://www.micro..com/for./FindPost/961358[1],为了不包含pic16f628a.h[2],使用代码标签[3],快速写入端口位将导致RMW问题,因为PIC没有LAT寄存器。
|
|
|
|
|
|
谢谢您的建议QHB…但它不能在我们的本地市场…对不起…
|
|
|
|
|
|
您好QHB,MCU您建议我14-PIN DIP,3 ADC 10位通道,两个定时器,256字节RAM 4K闪存,必须是低成本的。不需要其他外围设备。——KR
|
|
|
|
|
|
嗨,史提夫,如果你来自印度…您可以选择购买单件.http://..kitsn.s.com/Element14/search...ttp://in.element14.com/micro./pic16f1824-i-p/mcu-8bit-pic16-32mhz-dip-14/dp/1814944http://www....net/./.-us.htm-KR
|
|
|
|
|
|
我认为问题可能是使用“LedioR1=1”或“RA0=1”而不是“PurabiS.Ra0=1”。所以我尝试使用模拟器(但是对于我当前的项目使用PIC16F1778),PATA的值保持0x00。所以,我使用LababIT.LATA0和LATA改变到0x01,但是波尔塔没有改变。我已经使用MCC来设置RA0到GPIO输出,并且假设它也将清除安塞尔位,但它没有。当我手动修复时,“Purabest.Ra0=1”设置了PORTA。还有“led_r1=1”可以工作。PIC16F628A没有ADC,所以这不是问题,但是RMW现象可能是罪魁祸首,特别是当它在模拟器中工作而不在硬件中。您可以通过使用文件变量来实现一个LATA寄存器来进行位敲击,然后将其写入波尔塔。
|
|
|
|
|
|
当你在你的个人资料空白处留下位置的时候,你的本地市场有点困难…
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
485 浏览 0 评论
5806 浏览 9 评论
2346 浏览 8 评论
2234 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3540 浏览 3 评论
1145浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1114浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
883浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
487浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-9 06:32 , Processed in 1.280412 second(s), Total 110, Slave 93 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2679