BASIC4MCU | 질문게시판 | 답변 : atmega128에서 타이머를 이용한 세븐세그먼트
페이지 정보
작성자 master 작성일2020-06-17 16:31 조회4,463회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=12880
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2020-06-17 오후 4:36:59// by Ok-Hyun Park//세븐세그먼트 4개에 help라는 글자를 출력하는 프로그램을 짜봤습니다.delay_ms함수를 이용해서 아래와 같이 코드를 짰을때는 잘 작동합니다.//#include <mega128.h>#include <delay.h>//char help_data[4]={0x76,0x79,0x38,0x73};//void main(void){char digit=0;DDRA=0xff; DDRC=0xff;while(1){PORTA=help_data[digit]; PORTC=~(1<<digit); delay_ms(5); PORTC=0x0f;if(++digit>3)digit=0;}}//그런데 저는 delay_ms(5)대신 timer로 cnt를 세서 5ms를 세서 작동하는 코드를 만들어 보고 싶어다음과 같이 코드를 짜고 실행해보니 H만 출력되고 나머지 글자는 나타나지 않습니다.//#include <mega128.h>#include <delay.h>//char help_data[4]={0x76,0x79,0x38,0x73};bit sevenflag=0;char seven_cnt=0;//interrupt[TIM0_OVF]void timer0_ovf_isr(void){ // 1msTCNT0=6;if(++seven_cnt>=5){ seven_cnt=0; sevenflag=1; }}//void main(void){char digit=0;DDRA=0xff; DDRC=0xff;TCCR0=4; TCNT0=6; TIMSK=1; //16000000/64/(256- 6),1msSREG=0x80;while(1){if(sevenflag){ sevenflag=0;PORTC=0x0f; PORTA=help_data[digit]; PORTC=~(1<<digit);if(++digit>3)digit=0;}}}
댓글 1
조회수 4,463capa시터님의 댓글
capa시터 작성일감사합니다! 다시한번 해보겠습니다.