欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-16 11:55:16
[cpp]  #define global_clk    #include "def.h"  ...
[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;