LED灯

来源:互联网 发布:25岁程序员的出路 编辑:程序博客网 时间:2024/04/28 13:21
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mmu.h"
#include "typedef.h"
#include "S3C2451_gpio.h"
#include "S3C2451_uart.h"
//#include "S3C2451_irq.h"
//#include "S3C2451_eint.h"


void delay(unsigned int count);
void uart_init(void);
void led_init(void);
void spk_init(void);
void display(void);


U8 recvbuf[5] = {0};//5¸ö×Ö½ÚµÄÃüÁî×Ö


void Main()
{
U8 temp;
U8 i = 0;
//MMU³õʼ»¯£ºÔÚ³ÌÐò×ʼµÄʱºòµ÷ÓÃ
MMU_Init();


uart_init();
led_init();
spk_init();

while(1)
{
if(uart_isrecved(UART0))
{
temp = UART_ReceiveData(UART0);

recvbuf[i++] = temp;
if(i == 5)
{
i = 0;
}
}
else
{
display();
}
};

}
void delay(unsigned int count)
{
int j = 1000;
int i = 0;
while(--j)
for(i =count; i > 0; i --);
}
void uart_init()
{
UART_Init_Typedef uart0;

uart0.baudrate = 115200;
uart0.mode = UART_Mode_TX |UART_Mode_RX;
uart0.parity = Parity_No;
uart0.stop = STOP_1Bit;
uart0.wordwidth = WordWidth_8BIT;

UART_Init(UART0,uart0);
}
void led_init()
{
GPIO_Init_Typedef led1;
GPIO_Init_Typedef led2;
GPIO_Init_Typedef led3; 
GPIO_Init_Typedef led4;

led1.pinx = GPIO_PIN_5 ;
led1.mode = GPIO_MODE_OUT;
led1.udp = GPIO_UDP_DISABLE;

led2.pinx = GPIO_PIN_6;
led2.mode = GPIO_MODE_OUT;
led2.udp = GPIO_UDP_DISABLE;

led3.pinx = GPIO_PIN_25;
led3.mode = GPIO_MODE_OUT;
led3.udp = GPIO_UDP_DISABLE;

led4.pinx = GPIO_PIN_26;
led4.mode = GPIO_MODE_OUT;
led4.udp = GPIO_UDP_DISABLE;

GPIO_Init(GPIOB,led1);
GPIO_Init(GPIOB,led2);
GPIO_Init(GPIOA,led3);
GPIO_Init(GPIOA,led4);
}
void spk_init()
{
GPIO_Init_Typedef spk;

spk.pinx = GPIO_PIN_0;
spk.mode = GPIO_MODE_OUT;
spk.udp = GPIO_UDP_DISABLE;

GPIO_Init(GPIOB,spk);
}
void display()
{
if((recvbuf[0] == 0xfe) && (recvbuf[4] == 0xff))
{
if(recvbuf[1] == 0x00)//µ¥¸öLEDµãÁÁ
{
if(recvbuf[2] == 0x00)//LED1
{
if(recvbuf[3] == 0x00)
{
GPIO_WriteBit(GPIOB,GPIO_PIN_5,BIT_SET);
}
else if(recvbuf[3] == 0x01)
{
GPIO_WriteBit(GPIOB,GPIO_PIN_5,BIT_RESET);
}
}
else if(recvbuf[2] == 0x01)//LED2
{
if(recvbuf[3] == 0x00)
{
GPIO_WriteBit(GPIOB,GPIO_PIN_6,BIT_SET);
}
else if(recvbuf[3] == 0x01)
{
GPIO_WriteBit(GPIOB,GPIO_PIN_6,BIT_RESET);
}
}
else if(recvbuf[2] == 0x02)//LED3
{
if(recvbuf[3] == 0x00)
{
GPIO_WriteBit(GPIOA,GPIO_PIN_25,BIT_SET);
}
else if(recvbuf[3] == 0x01)
{
GPIO_WriteBit(GPIOA,GPIO_PIN_25,BIT_RESET);
}
}
else if(recvbuf[2] == 0x03)//LED4
{
if(recvbuf[3] == 0x00)
{
GPIO_WriteBit(GPIOA,GPIO_PIN_26,BIT_SET);
}
else if(recvbuf[3] == 0x01)
{
GPIO_WriteBit(GPIOA,GPIO_PIN_26,BIT_RESET);
}
}
}
else if(recvbuf[1] == 0x01)//¶à¸öLEDµãÁÁ
{
if(recvbuf[2] == 0x00)//4¸öLEDÉÁ˸£¬ÑÓʱnÃë
{
GPIO_WriteBit(GPIOB,GPIO_PIN_5,BIT_SET);
GPIO_WriteBit(GPIOB,GPIO_PIN_6,BIT_SET);
GPIO_WriteBit(GPIOA,GPIO_PIN_25,BIT_SET);
GPIO_WriteBit(GPIOA,GPIO_PIN_26,BIT_SET);
delay(60000);
GPIO_WriteBit(GPIOB,GPIO_PIN_5,BIT_RESET);
GPIO_WriteBit(GPIOB,GPIO_PIN_6,BIT_RESET);
GPIO_WriteBit(GPIOA,GPIO_PIN_25,BIT_RESET);
GPIO_WriteBit(GPIOA,GPIO_PIN_26,BIT_RESET);
delay(60000);


}
else if(recvbuf[2] == 0x01)//ÅÜÂíµÆ
{
GPIO_WriteBit(GPIOB,GPIO_PIN_5,BIT_RESET);
delay(60000);

GPIO_WriteBit(GPIOB,GPIO_PIN_5,BIT_SET);
GPIO_WriteBit(GPIOB,GPIO_PIN_6,BIT_RESET);
delay(60000);

GPIO_WriteBit(GPIOB,GPIO_PIN_6,BIT_SET);
GPIO_WriteBit(GPIOA,GPIO_PIN_25,BIT_RESET);
 delay(60000);

GPIO_WriteBit(GPIOA,GPIO_PIN_25,BIT_SET);
GPIO_WriteBit(GPIOA,GPIO_PIN_26,BIT_RESET);
delay(60000);

GPIO_WriteBit(GPIOA,GPIO_PIN_26,BIT_SET);
delay(60000);
}
}
else if(recvbuf[1] == 0x02)//¿ØÖÆ·äÃùÆ÷
{
if(recvbuf[2] == 0x00)
{
GPIO_WriteBit(GPIOB,GPIO_PIN_0,BIT_RESET);
}
else if(recvbuf[2] == 0x01)
{
GPIO_WriteBit(GPIOB,GPIO_PIN_0,BIT_SET);
}
else if(recvbuf[2] == 0x03)
{
GPIO_WriteBit(GPIOB,GPIO_PIN_0,BIT_RESET);
delay(60000);
GPIO_WriteBit(GPIOB,GPIO_PIN_0,BIT_SET);
delay(60000);
}
}
}//end if((recvbuf[0] == 0xfe) && (recvbuf[4] == 0xff))
}//end display()





0 0
原创粉丝点击