BASIC4MCU | 질문게시판 | LCD 스위치 코딩 문제 제발 부탁드립니다ㅠㅠ
페이지 정보
작성자 제발 작성일2020-10-20 01:05 조회37,842회 댓글11건본문
스위치 2개를 가지고 LCD에 숫자를 나타내는 문제입니다. 최초실행시 LCD 화면에 0이 떠있고 스위치1을 누르면 숫자 1을 더하고 스위치2를 누르면 숫자가 1을 빼는 코딩을 해야합니다..ㅠㅠ INT0,INT1을 연결하기 위해 PORTD0,PORTD1에 연결했습니다..코드를 작성했는데 계속 에러가나서 어떻게 작성해야하는지 알려주세요ㅠㅠ
/*
*/#include <macros.h>
#include <iom128v.h>
void delay_ms(unsigned int m);
void int0_isr(void);
void int1_isr(void);int main(void)
{
DDRD = 0xff;
EICRA = 0x0a;
EIMSK = 0x0f;
SEI();
char a = ‘0’;
while(1) {if((pinD & 0x01) != 0x01 ){
int0_isr();
delay_ms(10000);
}
else if ((pinD & 0x02) != 0x02){
int1_isr();
} delay_ms(10000);
}
void delay_ms(unsigned int m); {
unsigned int i, j;
for(i=0; i<m; i++) {
for(j=0; j<2113; j++)
}
}
#pragma interrupt_handler intn_isr:iv_INTN
void int0_isr(void) {
a++;
}#pragma interrupt_handler intn_isr:iv_INTN
void int1_isr(void) {
a--;
}이러한함수를 이용하여 코딩을 해야하는 문제입니다ㅠ
댓글 11
조회수 37,842master님의 댓글
master 작성일
DDRD = 0xff;
입력핀을 출력으로 설정하면 고장납니다.
master님의 댓글
master 작성일
EIMSK = 0x0f;
인터럽트 4개를 허용하면 오동작하게 됩니다.
EIMSK = 0x03;
정확하게 설정해야 합니다.
master님의 댓글
master 작성일무슨 에러인지에 대한 설명이 없군요?
제발님의 댓글
제발
/*
*/
#include <macros.h>
#include <iom128v.h>
void delay_ms(unsigned int m);
void int0_isr(void);
void int1_isr(void);
int main(void)
{
DDRD = 0xf0;
EICRA = 0x03; //인터럽트로 사용 (INT0,INT1)
EIMSK = 0x0f;
SEI();
while(1) {
if((PIND & 0x01) != 0x01 ){
int0_isr();
delay_ms(10000);
}
else if ((PIND & 0x02) != 0x02){
int1_isr();
} delay_ms(10000);
}
void delay_ms(unsigned int m); {
unsigned int i, j;
for(i=0; i<m; i++) {
for(j=0; j<2113; j++)
}
}
#pragma interrupt_handler intn_isr:iv_INTN
void int0_isr(void) {
char a = ‘0’;
a++;
}
#pragma interrupt_handler intn_isr:iv_INTN
void int1_isr(void) {
char a = ‘0’;
a--;
}
고쳤는데..
여기 m을 identifiter 한다고 나와요..ㅠㅠ
master님의 댓글
master 작성일
void delay_ms(unsigned int m); {
세미콜론을 삭제하세요
void delay_ms(unsigned int m) {
제발님의 댓글
제발
그래도 계속 syntax error; found '{' expecting ';' , skipping '}' 하면서 undeclared identifier 'm'이라고 뜹니다...ㅠㅠㅠㅠ
master님의 댓글
master
수정한 코드 첨부해보세요
제발님의 댓글
제발
#include <macros.h>
#include <iom128v.h>
void delay_ms(unsigned int m);
void int0_isr(void);
void int1_isr(void);
char a = '0';
int main(void)
{
DDRD = 0xf0;
EICRA = 0x03; //인터럽트로 사용 (INT0,INT1)
EIMSK = 0x0f;
SEI();
while(1) { // infinite-loop
display_LCD(a);
delay_ms(10000);
}
}
void delay_ms(unsigned int m)
{
unsigned int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<2117;j++);
}
}
void int0_isr(void) {
a++;
if( a > '9' ) a= '9';
}
void int1_isr(void) {
a--;
if( a < '0' ) a = '0';
}
로 다시고쳤습니다!
master님의 댓글
master
눈에 띄는 부분은 안보입니다.
해당 오류를 마우스로 클릭하면 오류가 발생한 라인으로 커서가 이동합니다.
void delay_ms(unsigned int m)
{
이 라인이 맞는지 체크해보세요
제발님의 댓글
제발
혹시 display_LCD 이함수가 없어서그런거같은데 이함수 코드를 모르겠습니다ㅜㅜㅠ 매번댓글 감사드려요ㅜㅠ
master님의 댓글
master 작성일함수를 찾으세요