[原创] 瑞萨R7F0C80212体验心得(2)——点亮我的led

xinmeng_wit   2014-8-14 16:57 楼主
       板上的2个led,一个是接在mcu的第9脚即P0.3;还有一个是接在第3脚即P0.4.要想点亮它们,只需要让P0.3和P0.4输出低电平就可以了,是不是很简单??呵呵……
       我这里所讲的方法不是用代码生成器来做,而是手工直接操作寄存器。我个人感觉代码生成器产生的代码太复杂太冗余,不够直接简单,不太符合我的编程习惯。
       要想操作寄存器,那得拿到它的数据手册,
中文数据手册.pdf (3.01 MB)
(下载次数: 60, 2014-8-14 16:38 上传)
,在这里面就哟寄存器的操作方法,很简单,一目了然。点亮led只需要简单的输出高低电平就可以了。下面是我的代码:


#pragma  sfr
void main(void)
{
        while(1)
        {
                PMC0&=~((1<<3)|(1<<4));//设置P0.3和P0.4为数字IO
                PM0&=~((1<<3)|(1<<4));//设置P0.3和P0.4为输出
                P0&=~((1<<3)|(1<<4));//设置P0.3和P0.4的输出值为0点亮2个led灯
        }
}


      怎么样,够简洁吧,这是一个完全正确的程序,能够点亮2个led,那我们再看下面的一段代码:


#pragma  sfr

void io_init()
{
        PMC0&=~((1<<3)|(1<<4));//设置P0.3和P0.4为数字IO
        PM0&=~((1<<3)|(1<<4));//设置P0.3和P0.4为输出
}
void main(void)
{
        io_init();
        while(1)
        {
                P0&=~((1<<3)|(1<<4));//设置P0.3和P0.4的输出值为0点亮2个led灯
        }
}




      这时候你会发现2个灯都不亮了,为什么呢??另外,再提醒大家注意一点PMC0要在PM0之前设置,否则也不亮,这又是为什么???


回复评论 (1)

后面的这段程序我试了,2个LED灯也可以亮
点赞  2018-5-24 12:45
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复