BASIC4MCU | 질문게시판 | avr 다시 질문할게요..
페이지 정보
작성자 햄스팸 작성일2018-06-05 17:02 조회12,493회 댓글3건본문
#include <avr/io.h>
#include <util/delay.h>
#define outp(x,y) ((y)=(x))
#define inp(x) (x)
#define LCD_RS_SET sbi(PORTD,0)
#define LCD_RS_CLEAR cbi(PORTD,0)
#define LCD_RW_SET sbi(PORTD,1)#define LCD_RW_CLEAR cbi(PORTD,1)
#define LCD_E_SET sbi(PORTD,2)
#define LCD_E_CLEAR cbi(PORTD,2)
#define LCD_LIGHT_SET sbi(PORTD,3)
#define LCD_LIGHT_CLEAR cbi(PORTD,3)
#define sbi(PORTX,bitX)PORTX |= (1<<bitX)
#define cbi(PORTX,bitX)PORTX &= ~(1<<bitX)
unsigned char display_data1[]=" HANKYONG ";unsigned char display_data2[]=" HAMHAMHAM ";
void delay(unsigned int i){
while(--i);
}
void lcd_busy(void)
{
unsigned char busy_data;
busy_data=0;
LCD_E_CLEAR;
outp(0x00, DDRB);
do{
LCD_RS_CLEAR;
LCD_RW_SET;
LCD_E_SET;
busy_data=inp(PINB);
LCD_E_CLEAR;
}while(busy_data & 0x80);outp(0xFF,DDRB);
}
void lcd_enable(void){
LCD_E_SET;
delay(100);
LCD_E_CLEAR;}
void lcd_func_set(void){
LCD_RW_CLEAR;
LCD_RS_CLEAR;
outp(0x38, PORTB);
lcd_enable();
}
void lcd_command(unsigned char lcd_data){
lcd_busy();
delay(1000);
LCD_RW_CLEAR;
LCD_RS_CLEAR;
outp(lcd_data,PORTB);
lcd_enable();}
void lcd_init(void)
{
LCD_E_CLEAR;
delay(50000);
lcd_func_set();
delay(10000);
lcd_func_set();
delay(1000);
lcd_func_set();
delay(1000);
lcd_command(0x38);
lcd_command(0x0C);
lcd_command(0x01);
lcd_command(0x06);}
void lcd_write_char(unsigned char lcd_data){
lcd_busy();
delay(1000);
LCD_RW_CLEAR;
LCD_RS_SET;
outp(lcd_data, PORTB);
lcd_enable();}
void lcd_display(void){
unsigned char i;
LCD_LIGHT_SET;
lcd_command(0x02);
for(i=0;i<16;i++){lcd_write_char(display_data1[i]);
}
lcd_command(0xC0);
for(i=0;i<16;i++){lcd_write_char(display_data2[i]);
}
}
int main(void){
{
outp(0xFF ,DDRB);
outp(0x0F ,DDRD);
outp(0x00 ,PORTD);
lcd_init();
lcd_display();
while(1){};
}
{
int i;
DDRA = 0xff;
while(1)
{
PORTA=0xff;
delay(1000);
PORTA=0x00;
delay(1000);
PORTA=0x01;
delay(1000);
for(i=0;i<14;i++)
{
if(i<7)
{
PORTA = PORTA<<1;
}
else
{
PORTA=PORTA<<1;
}
delay(1000);
}
}
}}
//////////////
했는데요 LCD는 불이 들어오는데 LED는 불이 안들어오는데 뭐가 문젠가요?
댓글 3
조회수 12,493master님의 댓글
master 작성일
아까하고 다른 코드인가요?
즉석으로 소스를 바로 바로 바꿀 정도면 대단한 실력이신데 질문을 하실 것 까지야...
햄스팸님의 댓글
햄스팸
마스터님이 답변해주신 코드입니다..ㅠㅠ 왜 LED는 불이 안들어올까요?
master님의 댓글
master 작성일
while(1){ };
이 명령은 무한루프이고
한번 들어가면 빠져나오지 못합니다.
이 아래에 코드를 적어도 실행되지 않습니다.
몇차례에 걸쳐서 수정해드리면서 계속해서 무한루프를 제거하고 있는데요
앞으로는 답변해드린 코드를 좀 공부하시고나서 질문하시면 감사하겠습니다.