|
|
本帖最后由 超电磁侠 于 2011-1-16 23:42 编辑
接下来,我们先来做一个人机互动的例子。
#include <18F14k50.h>
#fuses HS,NOFCMEN,NOBROWNOUT,NOWDT,BORV30,NOPUT,NOCPD,STVREN,
NOXINST,NOWRT,NOWRTD,NOWRTC,WDT32768,NOIESO,NOEBTR,NOEBTRB,
NOMCLR,NOPROTECT,NOCPB,NOWRTB,CPUDIV1,USBDIV1,PLLEN,NOHFOFST,
NOLVP
#use delay(clock=48000000)
#use rtos(timer=0,minor_cycle=10ms)
#task(rate=20ms, max=10ms) // 让程序每20ms检查一次开关的状态
void LED();
void LED()
{
if(input(PIN_C1)==0){ // input函数,设置该端口为输入
//并检查该端口的输入情况
output_high(PIN_C0);
}
if(input(PIN_C1)==1){
output_low(PIN_C0);
}
}
void main(void)
{
rtos_run();
}
编译出Hex文件,并在Proteus的单片机中载入。
Proteus中作如下修改,开关名字为switch 可以在元件库中搜索到,电源可以在右边工具条中的激励源中找到,放置好后双击那个符号,把电压设为5v
按下图连接,
开始仿真运行,每当点那个开关按下去的时候(仿真的时候可以互动),灯就会亮起! 这里的程序由于是仿真的,没有加入按键的去抖动。(debouncing ,google这个关键词会有很多相关的知识,时间所限,我先不扯远)
|
|