Các bác ơi mình đang học lập trình AVR bằng codevision. Giờ mình đang lập trình cho con Led 7 thanh. Mình muốn khi bấm nút thì số tăng, bấm nút khác thì số giảm ( 1 nút up và 1 nút down). Mình chỉ lập trình đc 1 kiểu thôi nhưng ko kết hợp được. đây là code của mình. Mong các pro giúp đỡ. Sao mạch của mình khi bấm nút down thì số giảm còm bấm nút up thì ko có chuyện gì xảy ra vậy.
/************************************************** ***
Project : Nut bam Led 7 thanh
Version : 1.0
Date : 8/7/2010
Author : Tuan Anh
Company : HUT
Chip type : ATmega16
Program type : Application
Clock frequency : 12.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
************************************************** ***/
#include <mega16.h>
#include <delay.h>
#define up PINA.0
#define down PINA.1
// Declare your global variables here
unsigned char dem=1;
void hien_thi (unsigned char x)
{
switch(x)
{
case 0: { PORTC=0xC0; break; } // So 0
case 1: { PORTC=0xF9; break; } // So 1
case 2: { PORTC=0xA4; break; } // So 2
case 3: { PORTC=0xB0; break; } // So 3
case 4: { PORTC=0x99; break; } // So 4
case 5: { PORTC=0x92; break; } // So 5
case 6: { PORTC=0x82; break; } // So 6
case 7: { PORTC=0xF8; break; } // So 7
case 8: { PORTC=0x80; break; } // So 8
case 9: { PORTC=0x90; break; } // So 9
}
}
void ham_up(void)
{
if(up)
{
dem++;
while(up);
delay_ms(10);
}
hien_thi(dem-1);
if(dem==10)
dem=0;
}
void ham_down (void)
{
if(down)
{
dem--;
while(down);
delay_ms(10);
}
hien_thi(dem);
if(dem==0)
{
hien_thi(0);
dem=10;
}
}
void main(void)
{
// Declare your local variables here
PORTA=0b00000111;
DDRA=0x00;
PORTC=0xff;
DDRC=0xFF;
while (1)
{
if(up==0&&down==1)
ham_up();
if(up==1&&down==0);
ham_down();
};
}
Đây là mạch và code của mình,
http://www.mediafire.com/?7vec0qq1bj2hehh
/************************************************** ***
Project : Nut bam Led 7 thanh
Version : 1.0
Date : 8/7/2010
Author : Tuan Anh
Company : HUT
Chip type : ATmega16
Program type : Application
Clock frequency : 12.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
************************************************** ***/
#include <mega16.h>
#include <delay.h>
#define up PINA.0
#define down PINA.1
// Declare your global variables here
unsigned char dem=1;
void hien_thi (unsigned char x)
{
switch(x)
{
case 0: { PORTC=0xC0; break; } // So 0
case 1: { PORTC=0xF9; break; } // So 1
case 2: { PORTC=0xA4; break; } // So 2
case 3: { PORTC=0xB0; break; } // So 3
case 4: { PORTC=0x99; break; } // So 4
case 5: { PORTC=0x92; break; } // So 5
case 6: { PORTC=0x82; break; } // So 6
case 7: { PORTC=0xF8; break; } // So 7
case 8: { PORTC=0x80; break; } // So 8
case 9: { PORTC=0x90; break; } // So 9
}
}
void ham_up(void)
{
if(up)
{
dem++;
while(up);
delay_ms(10);
}
hien_thi(dem-1);
if(dem==10)
dem=0;
}
void ham_down (void)
{
if(down)
{
dem--;
while(down);
delay_ms(10);
}
hien_thi(dem);
if(dem==0)
{
hien_thi(0);
dem=10;
}
}
void main(void)
{
// Declare your local variables here
PORTA=0b00000111;
DDRA=0x00;
PORTC=0xff;
DDRC=0xFF;
while (1)
{
if(up==0&&down==1)
ham_up();
if(up==1&&down==0);
ham_down();
};
}
Đây là mạch và code của mình,
http://www.mediafire.com/?7vec0qq1bj2hehh
Comment