我有这个程序,我想修改它,使发光二极管计数在二进制以1Hz(1s)的速率。
#include <xc.h>
void main(void) {
TRISD = 0x00;
PORTD = 0x00;
INTCON = 0xA0;
OPTION_REGbits.T0CS = 0;
OPTION_REGbits.PSA = 0;
OPTION_REGbits.PS = 7;
while(1);
}
void interrupt myISR(void) {
if(TMR0IF) {
PORTD++;
INTCONbits.TMR0IF = 0;
}
}
我知道我必须修改
myISR
函数,以便在一定数量的溢出之后PORTD
递增,并且需要适当的预加载值,但是就二进制计数而言,有哪些可能的方法来实现这一点? 最佳答案
如果计时器0中断出现,例如每100毫秒出现一次,则此示例可能有助于:
void interrupt myISR(void) {
static uint8_t counter = 0;
if(TMR0IF)
{
INTCONbits.TMR0IF = 0;
TMR0 = RELOAD_VALUE_100MS
counter++;
if (counter >= 10)
{
counter = 0;
PORTD++;
}
}
}
关于c - 如何在8个LED板上评估二进制数-PIC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53749031/