基于mini2440轮询控制LED(裸机代码)


[cpp] 
#define GLOBAL_CLK   
#include "def.h"  
#include "option.h"  
#include "2440addr.h"       
#include "2440lib.h"  
#include "2440slib.h"     
 
#define LED1_on  rGPBDAT = ((0xf<<5)^(1<<5))    //GPB5=0  
#define LED2_on  rGPBDAT = ((0xf<<5)^(1<<6))    //GPB6=0  
#define LED3_on  rGPBDAT = ((0xf<<5)^(1<<7))    //GPB7=0  
#define LED4_on  rGPBDAT = ((0xf<<5)^(1<<8))    //GPB8=0  
#define LED1_3_on  rGPBDAT = ((0xf<<5)^(5<<5))  //GPB5=0,GPB7=0  
#define LED2_4_on  rGPBDAT = ((0xf<<5)^(5<<6))  //GPB6=0,GPB8=0  
#define LED_off  rGPBDAT = (0xf<<5) //GPB5=1,GPB6=1,GPB7=1,GPB8=1  
#define LED_on  rGPBDAT = ~(0xf<<5) //GPB5=0,GPB6=0,GPB7=0,GPB8=0  
 
 
int Main()     /*GPG0 GPG3  GPG5  GPG6   GPG7   GPG11 设置为输入*/  
{   rGPGCON = ((0<1)|(0<7)|(0<11)|(0<13)|(0<15)|(0<23)); 
    rGPBCON = ((1<10)|(1<12)|(1<14)|(1<16));//B口GPB5-6-7-8设为输出   
    LED_off; 
     
    while( 1 ) 
    { 
 
        if (rGPGDAT&(1<<0)) //如果K1没有被按下   
        { 
            LED_off; 
        } 
        else 
        { 
            LED1_on; 
        } 
        if (rGPGDAT&(1<<3)) //如果K2没有被按下  
        { 
            LED_off; 
        } 
        else 
        { 
            LED2_on; 
        } 
        if (rGPGDAT&(1<<5)) //如果K3没有被按下  
        { 
            LED_off; 
        } 
        else 
        { 
            LED3_on; 
        } 
        if (rGPGDAT&(1<<6)) //如果K4没有被按下  
        { 
            LED_off; 
        } 
        else 
        { 
            LED4_on; 
        } 
        if (rGPGDAT&(1<<7)) //如果K5没有被按下  
        { 
            LED_off; 
        } 
        else 
        { 
            LED1_3_on; 
        } 
        if (rGPGDAT&(1<<11)) //如果K6没有被按下  
        { 
            LED_off; 
        } 
        else 
        { 
            LED2_4_on; 
        } 
    } 
    return 0; 

     

相关内容

    暂无相关文章

评论关闭