[讨论] 麻烦大家,初学者求解

fanzhe1879   2011-6-2 18:11 楼主
#include        "config.h"
#define                BEEPCON                0x00000080                          /*  设置P0.7引脚控制蜂鸣器低电平蜂鸣   */       
void __irq Eint0IRQ(void)
{
        uint32 i;
        i = IO0PIN;
        if((i&BEEPCON) == 0)                                          /*  控制蜂鸣器输出取反       */
        {
                IO0SET = BEEPCON;
        }
        else
        {
                IO0CLR = BEEPCON;
        }
        while((EXTINT & 0x01)!=0)                                         /*  等待再次按键             */
    {
            EXTINT = 0x01;                                   /*  清中断标志                */
    }        VICVectAddr = 0x00;                                                /*  告知VIC中断结束,更新硬件,接受下一次中断  */
}  
int main(void)
{
    PINSEL1 = PINSEL1 | 0x01;                                  /*  设置P0.16为外部中断0管脚    */                               
    PINSEL0 = 0x00;                                                        /*  设置P0.7为GPIO功能         */
    IO0DIR = BEEPCON;                                                /*  设置P0.7为输出              */

        IRQEnable();                                                        /*  IRQ中断使能                 */
        EXTMODE = 0x02;
        VICIntSelect = 0x00000000;
        VICDefVectAddr = (uint32)Eint0IRQ;
        EXTINT = 0x01;
        VICIntEnable = 1 << 14;
        while(1);                                                        /*                          等待中断       */
        return(0);
}

请问,该程序代码中蜂鸣器为什么要取反?IO0PIN读取的是P0.0引脚中IO0SET或IO0CLR的当前值吗?   while((EXTINT & 0x01)!=0) 所执行的内容我也不是很清楚     请大家帮我分析分析   谢谢了

回复评论 (3)

呵呵呵

蜂鸣取反是设计需要
IO0PIN应是当前管脚上的电平值,高1低0
你这段程序好像是按个键让蜂鸣无声,再按一下退出
http://shop34182318.taobao.com/ https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
点赞  2011-6-2 19:51
谢谢楼上    这段代码 实现的按键控制蜂鸣器    按下键,蜂鸣器响,松开后,蜂鸣器停 。     如果蜂鸣器不取反  还能实现这个功能吗?
点赞  2011-6-2 21:20

回复 楼主 fanzhe1879 的帖子

这个和硬件设计有关系。
点赞  2011-6-3 09:23
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复