作为C初学者,我很难解决我的这个问题:
我正在开展一个项目,我基本上必须使用mikroC平台在C中编写PIC(微芯片)。
我想要实现的只有一个开关/按钮,我将不得不从三个不同的“模块”切换(我称之为“模块”,它们对应于LED创建的不同照明效果),具体取决于时间花了按下开关/按钮。在我的情况下,在500 ms模块1启动后,1500 ms后模块2上升,3500 ms后模块3启动(整个过程必须处于无限循环中,因为我必须能够更换模块在操作期间的任何时候)。
我唯一的问题是让定时器/时钟在程序开始时开始运行并保持计时直到它达到停止信号(如循环结束或其他东西)。
这可能不适合问这个社区,但在这里我仍然是。
我意识到这不仅仅是一个“算法/逻辑”问题,而是我上周一直在尝试的,没有任何关于如何解决这个问题的线索......
没有结果,因为代码根本没有准备好。
有一个mikroC library for handling button presses。以下示例(来自链接。)提供了检测按钮按下的骨架示例...
bit oldstate; // Old state flag
void main() {
ANSEL = 0; // Configure AN pins as digital I/O
ANSELH = 0;
C1ON_bit = 0; // Disable comparators
C2ON_bit = 0;
TRISB0_bit = 1; // set RB0 pin as input
TRISC = 0x00; // Configure PORTC as output
PORTC = 0xAA; // Initial PORTC value
oldstate = 0;
do {
if (Button(&PORTB, 0, 1, 1)) { // Detect logical one
oldstate = 1; // Update flag
}
if (oldstate && Button(&PORTB, 0, 1, 0)) { // Detect one-to-zero transition
PORTC = ~PORTC; // Invert PORTC
oldstate = 0; // Update flag
}
} while(1); // Endless loop
}
还有一系列MicroE Examples,包括定时器示例,如these和this one。这些中的每一个都提供了代码库示例,这些示例可以适用于创建可以包围按钮按压代码中的部分以获得持续时间的功能。
我希望这有帮助。