- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 C、MPLAB X(IDE 和 IPE)以及 PICKit 3 开始使用 PIC 18F4550。我已经设法让一个 LED 闪烁而没有任何问题,但当我尝试同时闪烁多个 LED 时,它不起作用。
请注意,我将在问题末尾发布完整的代码。在那之前,我将编写伪代码,希望能让我的问题更清晰一些。
假设我想要闪烁 4 个 LED,每个 LED 都连接到芯片的输出引脚,您显然会输入类似的内容
loop{
output1 = 1;
output2 = 1;
output3 = 1;
output4 = 1;
delay();
output1 = 0;
output2 = 0;
output3 = 0;
output4 = 0;
delay();
}
您可能会期望所有 LED 都会同时打开和关闭。然而,我注意到只有连接到输出 4 的 LED 会闪烁,其余的将保持关闭状态。所以我尝试翻转输出引脚的顺序
loop{
output1 = 1;
output2 = 1;
output4 = 1;
output3 = 1;
delay();
output1 = 0;
output2 = 0;
output4 = 0;
output3 = 0;
delay();
}
因此,只有连接到输出 3 的 LED 会闪烁,其余部分将保持关闭状态。
所以我想,不知何故,代码并没有像我预期的那样按顺序执行。任何人都可以向我提供解释和可能的解决方案吗?
非常感谢!
这是完整的代码
#include <xc.h>
#include <p18f4450.h>
#pragma config FOSC = HS
#define outRed PORTBbits.RB0
#define outBlue PORTBbits.RB1
#define outYellow PORTBbits.RB2
#define outGreen PORTBbits.RB3
#define _XTAL_FREQ 10000000
void delay(unsigned int);
void main(void) {
TRISBbits.TRISB0 = 0;
TRISBbits.TRISB1 = 0;
TRISBbits.TRISB2 = 0;
TRISBbits.TRISB3 = 0;
while(1) {
outRed = 1;
outGreen = 1;
outBlue = 1;
outYellow = 1;
delay(1000);
outRed = 0;
outGreen = 0;
outBlue = 0;
outYellow = 0;
delay(1000);
}
}
void delay(unsigned int delayInput) {
unsigned int mul = delayInput/50;
unsigned int count = 0;
for (count = 0; count <= mul; count ++)
__delay_ms(50);
}
最佳答案
这可能是 LATCH 问题。我刚开始的时候也遇到过几次这个问题。尝试写入 LATB(输出锁存器)寄存器而不是 PORTB 寄存器。我总是使用 LATx 进行输出,使用 PORTx 进行输入。
关于c - 使用 PIC 18F4550 使 3 个 LED 闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39548630/
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
让我们快速回顾一下以下案例: 不将动态链接与位置无关代码相结合。我可能敢说这是一个不可能的案例,但当我深入探讨这个主题时,我不太确定。 将静态链接与位置无关代码相结合。我相信这作为一个有效的组合是完全
我正在将一个线程局部变量添加到几个始终直接链接到可执行文件的目标文件中。这些对象永远不会包含在共享库中(并且可以安全地假设这在可预见的 future 会成立)。这意味着这些对象不需要 -fPIcfla
这个问题与this one有关以及它的答案。 我刚刚在我正在处理的构建中发现了一些丑陋之处。情况看起来有点像下面(用gmake格式写的);请注意,这特别适用于 sparc 和 x86 硬件上的 32
我在 PIC 的 mikroC 中实现基于定时器的中断时遇到问题。 如果 PORTC.F0 处有按键,我想切换端口引脚 8 次,并且切换之间应该有 100 毫秒的延迟。 通常使用延迟函数这会很容易 f
我试图通过 SPI 通信让 PIC1 成为主机,PIC2 成为从机。我想从 PIC1(master)发送命令到 PIC2(slave),然后让它做一些事情。但是,我也想通过 SPI 通信建立从 PIC
我正在使用 cvSplit() 来分离 RGB channel 并将它们打印在 3 个不同的图像中,显示颜色 r、g 和 b。但我只有黑白照片的 BW 图像。这是使用 cvSplit() 时的正确输出
初始化以下变量时: 01 BATCH-REC. 03 BATCH-VERSION PIC X(2). 03 BATCH-FIELDS
当我在学习 javafx 教程并尝试为 ImageView 创建一个新的 Image 实例以将其用于 TreeView 时,我注意到导师曾经创建一个 ImageView:new ImageView(n
我正在研究 PIC16F887,我的任务主要基于 adc 读数(8 位)。有 10 个不同的模拟输入,因此逐个读取它们需要相当长的时间。时钟为 20Mhz,adc 唯一允许的设备频率为 Fosc/32
我有一 block 带有特殊 UEXT connector 的 Olimex A20 板它可以连接 SPI、I2C 和 RS 232。我喜欢使用 Olimex 的 MOD Zigbee 模块直接通过
有没有办法在不使用pickit型编程器的情况下编程(闪存)裸(尚未使用引导加载程序闪存)pic32芯片? 例如,是否有任何正在进行的 JTAG 项目? 最佳答案 建议您引用Microchip PIC3
阅读时this blogpost , 当作者试图证明共享库需要 PIC 时,我遇到了以下情况。 If your shared library is built to only work when lo
我是 PIC mcu 的新手。我使用 pic12f675 MPLAB 和 XC8 来制作 LED 多次闪烁模式。 我有按钮问题(经过审查,它调用了 Bounce 和 Debounce)。 有时当我按下
是否有用于不可屏蔽中断的独立通信总线绕过可编程中断 Controller ? 或者 PIC 是否管理所有中断,但按照约定传递所有不可屏蔽中断? 这是否取决于架构,或者是否有特定的理由选择其中一种而不是
我想问一下如何在PIC C编译器中为PIC18f4620编写代码,以便在模拟输入之一为1时传输日期 最佳答案 对于这个网站来说,这个问题实在是太宽泛了。如何编写代码取决于您使用的 PIC C 编译
我是 PIC 编程新手,正在使用 MPLAb。我有一个关于中断的问题..所以我想做的是,当我按下按钮时,我想打开 LED 0,如果我松开按钮,则打开 LED 1。我认为我编写的代码有意义,但它不起作用
我想用我的PIC18F4550、蓝牙模块HC-06和电脑做一个简单的测试。我的意思是,我想使用蓝牙模块将一个简单的字符从 PIC 发送到 PC。 它应该在终端中出现一个“A”,但出现的是十六进制的 F
所以我使用的微型芯片是 PIC 18F。 如果设置了Alarm_Status.bits.b3(本质上只是一个开关),则会创建警报。第一个代码片段按其应有的方式工作 BS(TRISB,7);
经过大量的试错和堆砌,我(我们)设法让两张图片以一种非常特殊的方式重叠: 这是这样实现的: .container { width: 900px; margin: auto; } .center
我是一名优秀的程序员,十分优秀!