飞思卡尔单片机 拨码开关控制LED灯 主程序

voidmain(void){/*putyourowncodehere*/unsignedcharNum;EnableInterrupts;//使能中断LED_DD=0x... void main(void)
{
/* put your own code here */
unsigned char Num;

EnableInterrupts; //使能中断

LED_DD = 0x0F; //定义端口矢量:高位读入,低位输出
led = 0xFF;

for(;;)
{
Num = led; //读拨码开关

led = Num>>4; //送显示

delay(10);

} /* wait forever */
/* please make sure that you never leave this function */
}
for 里面的前两条语句 有点没看懂啊 请详细解释下
在单片机上到底是怎么实现的啊。。 我通过控制开关 控制灯的亮和灭啊 跟循环有什么关系 。。。不明白 拨开关与循环 关系。。
展开
 我来答
tengzhen168
推荐于2018-04-12 · 超过12用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:32.2万
展开全部
飞思卡尔单片机的普通输入输出的某一个端口同一时刻只能做输入或者输出。且需事先初始化端口寄存器。'0'为输入,‘1’为输出。同时要清空数据寄存器内容。 比方说使用PORTA_PA0口控制单个外部共阳指示灯的显示,显然为输出控制。可以这样写
/*初始化*/
DDRA=0X01;//定义方向寄存器输出,也可以写成0Xff 只是其他的7个口不用
PORTA_PA0=1;//共阳 初始化指示灯不亮
/*主函数*/
PORTA_PA0=0;//PA0端口输出0 低电平 指示灯亮
比方说使用PORTA_PA3口读取外部电平信号,显然为输入控制。可以这样写
/*初始化*/
DDRA=0X00;//定义方向寄存器输入,8个端口全为输入
/*主函数*/
unsigned char LED;
LED=PORTA_PA3;//读入端口数据

你上面的程序 我的理解是这样的,程序事先有宏定义LED_DD、 led :

LED_DD = 0x0F; //方向寄存器 高四位输入(拨码开关) 低四位输出
led = 0xFF; //给定初始值
for(;;)
{
Num = led; //读拨码开关

led = Num>>4; //送显示

delay(10);

}

单片机微控制器的工作原理是靠内部时钟晶振来执行程序的,每一个时钟周期执行一步程序。其实for循环前面的程序仅仅是完成单片机端口初始化、系统参数初始化。程序一直在for循环和中断服务程序里执行,也就是遵循扫描的原理。 没了for循环 你的程序就只能读取端口的状态一次执行到main()函数最后一条指令就停止工作了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式