비트 단위조작 실습
LED1 특정 bit(PORTC.0)만 on, off 되는 프로그램을 구현
<소스 코드>
/* AVR ATmega 128 교제, P.87
제목 : 비트 단위조작 실습
LED1 특정 bit(PORTC.0)만 on, off 되는 프로그램을 구현
LED는 0의 값을 출력할 경우에 ON이 된다
*/
#include <mega128.h>
#include <delay.h>
#define LED0 PORTC.0
void main()
{
DDRC = 0xff;
PORTC = 0xff;
while(1){
LED0 = 0;
delay_ms(500);
LED0 = 1;
delay_ms(500);
}
}
LED 제어 연습
port C에 연결되어 있는 LED를 순차적으로 on, off 시키는 프로그램 작성
<소스 코드>
/*
AVR ATmega 128 교제, P.88
제목 : LED 제어 연습
port C에 연결되어 있는 LED를 순차적으로 on, off 시키는 프로그램 작성
-> PC0부터 PC7에 연결되어 있는 LED를 순차적으로 2bit씩 left shift ON 시키고,
PC7의 LED가 ON된 후에는 다시 PC0의 LED 부터 ON이 되도록 한다.
*/
#include <mega128.h>
void Delay(unsigned int); //시간 지연함수
void main(void)
{
unsigned char led = 0xfc;
unsigned int k = 64;
DDRC = 0xff; //포트 C출력 설정
while(k !=0){
PORTC = led;
Delay(20);
led <<= 1;
led |= 0x01;
k--;
if(led == 0x7f){
led = 0xfc;
}
}
}//end main
void Delay(unsigned int cnt){
unsigned int i, j;
for(i=0; i<cnt ; i++){
j=50000;
while(--j);
}
}
<코드 설명>
led <<1 ; // 한자리 왼쪽으로 이동
1111 1100 -> 1111 1000 ( 한자리 왼쪽으로 이동) -> 1111 1001 ( 그자리에 1을 보상)
LED 제어 실습
port C에 연결되어 있는 LED를 순차적으로 on,off 시키는 프로그램
[소스 코드]
/* AVR ATmega 128 교제, P.89
제목 : LED 제어 실습
port C에 연결되어 있는 LED를 순차적으로 on,off 시키는 프로그램
-> PC0부터 PC7에 연결되어 있는 LED를 순차적으로 2bit씩 left shift ON 시킨 후 2bit 씩 오른쪽 shift ON 반복
*/
#include <mega128.h>
void Delay(unsigned int);
void main(void)
{
unsigned char led = 0b11111100;
DDRC = 0xff; //포트 C출력 설정
while(1){
//두개씩 왼쪽으로 시프트
while(led != 0b00111111){
PORTC = led;
Delay(30);
led <<=2;
led |= 0b00000011;
}
//두개씩 오른쪽으로 시프트
while(led != 0b11111100){
PORTC = led;
Delay(30);
led >>=2;
led |= 0b11000000;
}
}
}//end main
void Delay(unsigned int cnt){
unsigned int i,j;
for(i=0; i<cnt ; i++){
j = 50000;
while(--j);
}
}
LED 제어 실습 - 배열이용
배열을 이용하여 LED가 on, off 할 수 있게 프로그램을구현
[소스 코드]
/*
AVR ATmega 128 교제, P.90
제목 : LED 제어 실습 - 배열
배열을 이용하여 LED가 on, off 할 수 있게 프로그램을구현
data value : 1--> LED ON, 0 --> LED OFF
*/
#include <mega128.h>
#include <delay.h>
int led[4] = {0x7e, 0xbd, 0xdb, 0xe7 };
void main(void)
{
int i;
DDRC = 0xff;
while(1){
for(i=0; i<4; i++){
PORTC = led[i];
delay_ms(400);
}
}
}
LED 제어 실습 - 배열이용 좌우 스크린
LED를 좌, 우 스크린 하는 실습예제
[소스 코드]
/* AVR ATmega 128 교제, P.91
제목 : LED 제어 실습
LED를 좌, 우 스크린 하는 실습예제
*/
#include <mega128.h>
#include <delay.h>
//int led[5] = { 0xff, 0x7e, 0xbd, 0xe7}; //좌,우 스크린
int led[5] = { 0xf, 0x7e, 0x3c, 0x18, 0x00};
void main(void)
{
int i;
DDRC = 0xff;
while(1){
for(i=0; i<5; i++){
PORTC = led[i];
delay_ms(100);
}
for(i=3; i>0; i--){
PORTC = led[i];
delay_ms(100);
}
}
}
LED 제어 실습 - 배열이용해서 새로운 응용
LED 를 좌, 우로 on, off 하는 실습예제
흥~ 파일이름 잘못 썼네... 1216G~
[소스 코드]
/*
AVR ATmega 128 교제 P.92
제목 : LED 제어 실습 - 배열이용해서 새로운 응용
LED 를 좌, 우로 on, off 하는 실습예제
*/
#include <mega128.h>
#include <delay.h>
int led[8] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef,0xdf, 0xbf, 0x7f};
void main(void)
{
int i = 0;
DDRC = 0xff;
PORTC = 0xff;
while(1){ //무한루프
for( i=0; i<8 ; i++){
PORTC = led[i];
delay_ms(400);
}
for( i=6; i>0; i--){
PORTC = led[i];
delay_ms(400);
}
}
}//end main
LED 제어 실습 - 배열이용해서 새로운 응용
port C 에 연결되어 있는 LED를 순차적으로 on, off 시키는 프로그램을 작성
[소스 코드]
/*
AVR ATmega 128 교제 P.94
제목 : LED 제어 실습 - 배열이용해서 새로운 응용
port C 에 연결되어 있는 LED를 순차적으로 on, off 시키는 프로그램을 작성
-> PC7-PC6...PC0-PC1-PC2- 이런 순서되로 LED가 ON~
*/
#include <mega128.h>
void Delay(unsigned int);
void main(void)
{
unsigned char led =0xfe;
DDRC = 0xff; //포트 C 출력설정
while(1){
do{
PORTC = led; //포트 C에 출력
Delay(5); //시간지연
led <<= 1; //led변수의 좌 시프트
led |= 0x01; //Shift 후에 0비트에는 '0'이 입력 '1'로 셋
} while(led != 0x7f); //MSB가 켜지면 루푸 종료
do{
PORTC = led; //포트 C에 출력
Delay(5); //시간 지연
led >>=1; //led 변수의 우 시프트
led |= 0x80; //쉬프트 후에 7 비트에는 '0'이 입력 '1'로 셋
} while(led != 0xfe);
}
}//end main
void Delay(unsigned int cnt){
unsigned int i,j;
for(i=0,j=0; i<cnt ; i++){
j=50000;
while(--j);
}
}