BASIC4MCU | 질문게시판 | 답변 : atmega128 질문드립니다.
페이지 정보
작성자 master 작성일2018-12-20 10:38 조회13,873회 댓글3건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=7108
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-20 오전 10:43:54// by Ok-Hyun Park//#define F_CPU 7372800UL // 7.3728 MHz#include <avr/io.h>#include <avr/interrupt.h>#include <util/delay.h>//signed char mot_cnt=0,val=0;//unsigned char FND[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x67,0x77,0x7C,0x39,0x5E,0x79,0x71,0x08,0x80};unsigned char MOTOR[]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //1-2상 여자//ISR(TIMER0_COMP_vect){ // 22.2ms//if((PIND&1)==0){ // sw0if(--mot_cnt<0)mot_cnt=7; // Rightif(++val>9)val=0; // FND 증가PORTB=0xFF; // LED onPORTE=0x08; // Buzzer onif()}//if((PIND&2)==0){ // sw1if(++mot_cnt>7)mot_cnt=0; // leftif(--val<0)val=9; // FND 감소PORTB=0x00; // LED offPORTE=0x00; // Buzzer off}//PORTC=MOTOR[mot_cnt];}//int main(){DDRD=0xFF; // FNDDDRB=0xFF; // LEDDDRC=0x0F; // STEP MOTORDDRE=0x08; // Buzzer onTCCR0=0x0F; OCR0=159; TIMSK=2; // 7372800/1024/160=45Hz=22.2msSREG=0x80;while(1);}
mot_cnt값을 FND에 출력하려면
if(++val>7)val=0; // FND 증가if(--val<0)val=7; // FND 감소9대신 7로 변경해주면 됩니다.
댓글 3
조회수 13,873atmegaga님의 댓글
atmegaga 작성일PIN에서 쓰는 PORTD와 FND 포트D가 겹치는 부분은 코드에서 포트만 다시 설정해주면되는건가요?
master님의 댓글
master 작성일
if((PINA&1)==0){ // sw0
if((PINA&2)==0){ // sw1
스위치를 PA0,PA1로 변경하면 되겠습니다.
외부 풀업저항을 달아줘야하는데
풀업저항 없으면
int main(){
DDRA=0x03; // 스위치 내부 풀업저항 사용
추가하세요
atmegaga님의 댓글
atmegaga 작성일
음 말씀하신대로 했는데 FND 변화가 전혀없네요 ㅠㅠㅠㅠㅠㅠ
그리고 PIND를 PINA로 바꾸면 오작동이 나요 ㅠㅠㅠㅠ
FND에 대한 포트 정의를 안해줘서 그런가요?ㅠㅠ
PORTF = FND_DATA_TBL[val]; 이부분을 추가해야되나요?
스위치 부분은 A가 안되고 D포트만 된다고해서 FND를 F포트로 바꿧습니다.