BASIC4MCU | 질문게시판 | atmega128에서 타이머를 이용한 세븐세그먼트
페이지 정보
작성자 capa시터 작성일2020-06-17 12:22 조회3,372회 댓글0건본문
세븐세그먼트 4개에 help라는 글자를 출력하는 프로그램을 짜봤습니다. delay_ms함수를 이용해서 아래와 같이 코드를 짰을때는 잘 작동합니다.
#include <mega128.h>
#include <delay.h>char help_data[4]={0x76,0x79,0x38,0x73};
void main(void)
{
unsigned int i=0,digit=0;
PORTA=0x00;
DDRA=0xff;
PORTC=0x00;
DDRC=0xff;
while (1)
{
PORTC=0x0f;
PORTA=help_data[digit];
PORTC=~(0x01<<digit);
delay_ms(5);
i++;
digit=i%4;}
}
그런데 저는 delay_ms(5)대신 timer로 cnt를 세서 5ms를 세서 작동하는 코드를 만들어 보고 싶어
#include <mega128.h>
#include <delay.h>
// Declare your global variables here
// Standard Input/Output functions
#include <stdio.h>bit sevenflag=0;
int seven_cnt=0;
char help_data[4]={0x76,0x79,0x38,0x73};
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x06;
// Place your code here
seven_cnt++;
if(seven_cnt>=5)
{
seven_cnt=0;
sevenflag=1;
}
else sevenflag=0;
}
void main(void)
{
unsigned int i=0,digit=0;
PORTA=0x00;
DDRA=0xff;
PORTC=0x00;
DDRC=0xff;
while (1)
{
PORTC=0x0f;
PORTA=help_data[digit];
PORTC=~(0x01<<digit);
if(sevenflag==1)
{
sevenflag=0;
i++;
digit=i%4;
}}
}다음과 같이 코드를 짜고 실행해보니 H만 출력되고 나머지 글자는 나타나지 않습니다. 어떤부분을 고쳐야 좋을지 모르겠습니다.ㅠㅠ
댓글 0
조회수 3,372등록된 댓글이 없습니다.