chào mọi người.chả là em đang làm đồ án dùng atmega 16 điều khiển tay máy công nghiệp.chuơng trình thì em đã viết được rồi nhưng còn nút stop thì em chưa làm được.em cũng chỉ mới tìm hiểu qua về avr và theo em thấy thì nên dùng ngắt cho nút stop.em lần trên mạng rất nhiều nhưng vẫn chưa biết khai báo ra sao.và thêm 1 vấn đề nữa là nút stop lại kết nối với cổng B.7 .mà em tìm datasheet thì ngắt ngoài ở PORTD.nhưng PORTD em lấy làm đầu ra rồi.mong mọi người giúp đỡ nút stop này giúp em với .và thiết lập ngắt trên codevision như thế nào ạ.em vẫn chưa biết thiết lập ngắt.
đây là code của em.
#include <mega16.h>
// Alphanumeric LCD Module functions
#include <alcd.h>
#include <delay.h>
#define MODE PINB.5
#define START PINB.6
#define STOP PINB.7
//=======CAM BIEN ======
#define cbsp PINA.0
#define vitri PINA.1
#define vatden PINA.2
#define kimloai PINA.3
#define kho1 PINA.4
#define kho2 PINA.5
#define kho3 PINA.6
#define HVGap PINA.7
#define HVNha PINB.0
//======DAU RA=====
#define daysp PORTD.0
#define luisp PORTD.1
#define DC_tien PORTD.2
#define DC_lui PORTD.3
#define nang_ha PORTD.4
#define gap_nha PORTD.5
#define quayphai PORTD.6
#define quaytrai PORTD.7
// Declare your global variables here
unsigned char i=0,j=0,x=0,y=0,z=0;
void chayct(void);
void gap(void);
void main(void)
{
PORTA=0xC0;
DDRA=0x00;
PORTB=0xE1;
DDRB=0x00;
PORTC=0x00;
DDRC=0x10;
PORTD=0x00;
DDRD=0xFF;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADCSRA=0x00;
SPCR=0x00;
TWCR=0x00;
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("06dt2");
lcd_gotoxy(0,1);
lcd_putsf("TAY MAY SO 3");
while (1)
{
while(!MODE)i=1;
if(i==1)
{
lcd_gotoxy(0,0);
lcd_putsf("an mode");
delay_ms(100);
luisp=1;
lcd_gotoxy(0,0);
lcd_putsf("lui sp");
delay_ms(200);
luisp=0;
delay_ms(200);
while(i==1)
{
quayphai=1;
lcd_gotoxy(0,0);
lcd_putsf("quay phai");
while(kho1==1)
{
quayphai=0;
lcd_gotoxy(0,0);
lcd_putsf("dung quay");
delay_ms(200);
DC_lui=1;
lcd_gotoxy(0,0);
lcd_putsf("DC lui");
while(HVGap==0)
{
DC_lui=0;
lcd_gotoxy(0,0);
lcd_putsf("dung lai");
goto thoat;
}
}
}
thoat: i=2;
delay_ms(200);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("bo sp vao");
lcd_gotoxy(0,1);
lcd_putsf("roi an start");
}
////////////
while(!START)j=1;
if(j==1&i==2)
{
chayct();
}
if(!STOP)
{
daysp=0;luisp=0;DC_tien=0;DC_lui=0;
gap_nha=0;nang_ha=0;quayphai=0;quaytrai=0;
}
}
}
void chayct()
{
lcd_clear();
lcd_gotoxy(0,1);
lcd_putsf("da an start");
delay_ms(200);
luisp=0;
daysp=1;
while(j==1)
{
if(cbsp==1&vitri==0)
{
delay_ms(200);
luisp=0;
daysp=1;
delay_ms(200);
daysp=0;
y=0;z=0;
}
////////////////////////////////////////
if(vitri==1&vatden==0&kimloai==0)
{
lcd_gotoxy(0,0);
lcd_putsf("SP LOAI BO");
lcd_gotoxy(0,1);
lcd_putsf("BO VAO KHO 1");
delay_ms(300);
gap();
x=1;
}
if(HVNha==0&x==1)
{
DC_tien=0;
lcd_gotoxy(0,0);
lcd_putsf("dung lai");
delay_ms(300);
gap_nha=0;
lcd_gotoxy(0,0);
lcd_putsf("nha sp");
delay_ms(200);
DC_lui=1;
y=1;
lcd_gotoxy(0,0);
lcd_putsf("lui ve");
}
//////////////////////////////////////
if(vatden==1&vitri==1)
{
lcd_gotoxy(0,0);
lcd_putsf("VAT DEN");
lcd_gotoxy(0,1);
lcd_putsf("BO VAO KHO 2");
delay_ms(300);
gap();
x=2;
}
if(kho2==1&x==2)
{
quaytrai=0;
delay_ms(300);
gap_nha=0;
delay_ms(300);
quayphai=1;
x=0;
z=1;
}
//////////////////////////////////////
if(kimloai==1&vitri==1)
{
lcd_gotoxy(0,0);
lcd_putsf("KIM LOAI");
lcd_gotoxy(0,1);
lcd_putsf("BO VAO KHO 3");
delay_ms(300);
gap();
x=3;
}
if(kho3==0&x==3)
{
quaytrai=0;
delay_ms(300);
gap_nha=0;
delay_ms(300);
quayphai=1;
x=0;
z=1;
}
//////////////////////////////////
if(HVNha==0&x>1)
{
DC_tien=0;
lcd_gotoxy(0,0);
lcd_putsf("dung lai");
delay_ms(300);
quaytrai=1;
}
//////////////////////////////////
if(DC_tien==1)
{
DC_lui=0;
}
//////////////////////////////////////
if(HVGap==0&y==1)
{
DC_lui=0;
y=0;
delay_ms(300);
lcd_clear();
delay_ms(200);
lcd_gotoxy(0,1);
lcd_putsf("moi bo sp");
}
if(kho1==1&z==1)
{
quayphai=0;
lcd_gotoxy(0,0);
lcd_putsf("dung quay");
delay_ms(200);
DC_lui=1;
z=0;
y=1;
lcd_gotoxy(0,0);
lcd_putsf("DC lui");
}
}
}
void gap(void)
{
lcd_gotoxy(0,0);
lcd_putsf("THUC HIEN GAP");
delay_ms(400);
nang_ha=1;
lcd_gotoxy(0,0);
lcd_putsf("ha tay gap");
delay_ms(400);
gap_nha=1;
lcd_gotoxy(0,0);
lcd_putsf("gap sp");
delay_ms(400);
luisp=1;
delay_ms(400);
nang_ha=0;
lcd_gotoxy(0,0);
lcd_putsf("nang sp");
delay_ms(400);
DC_tien=1;
}
Download avr.rar - Mup5.Com - Mobile Upload File - Free Upload File For Mobile đây là file mô phỏng của em.mong mọi người giúp đỡ
đây là code của em.
#include <mega16.h>
// Alphanumeric LCD Module functions
#include <alcd.h>
#include <delay.h>
#define MODE PINB.5
#define START PINB.6
#define STOP PINB.7
//=======CAM BIEN ======
#define cbsp PINA.0
#define vitri PINA.1
#define vatden PINA.2
#define kimloai PINA.3
#define kho1 PINA.4
#define kho2 PINA.5
#define kho3 PINA.6
#define HVGap PINA.7
#define HVNha PINB.0
//======DAU RA=====
#define daysp PORTD.0
#define luisp PORTD.1
#define DC_tien PORTD.2
#define DC_lui PORTD.3
#define nang_ha PORTD.4
#define gap_nha PORTD.5
#define quayphai PORTD.6
#define quaytrai PORTD.7
// Declare your global variables here
unsigned char i=0,j=0,x=0,y=0,z=0;
void chayct(void);
void gap(void);
void main(void)
{
PORTA=0xC0;
DDRA=0x00;
PORTB=0xE1;
DDRB=0x00;
PORTC=0x00;
DDRC=0x10;
PORTD=0x00;
DDRD=0xFF;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADCSRA=0x00;
SPCR=0x00;
TWCR=0x00;
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("06dt2");
lcd_gotoxy(0,1);
lcd_putsf("TAY MAY SO 3");
while (1)
{
while(!MODE)i=1;
if(i==1)
{
lcd_gotoxy(0,0);
lcd_putsf("an mode");
delay_ms(100);
luisp=1;
lcd_gotoxy(0,0);
lcd_putsf("lui sp");
delay_ms(200);
luisp=0;
delay_ms(200);
while(i==1)
{
quayphai=1;
lcd_gotoxy(0,0);
lcd_putsf("quay phai");
while(kho1==1)
{
quayphai=0;
lcd_gotoxy(0,0);
lcd_putsf("dung quay");
delay_ms(200);
DC_lui=1;
lcd_gotoxy(0,0);
lcd_putsf("DC lui");
while(HVGap==0)
{
DC_lui=0;
lcd_gotoxy(0,0);
lcd_putsf("dung lai");
goto thoat;
}
}
}
thoat: i=2;
delay_ms(200);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("bo sp vao");
lcd_gotoxy(0,1);
lcd_putsf("roi an start");
}
////////////
while(!START)j=1;
if(j==1&i==2)
{
chayct();
}
if(!STOP)
{
daysp=0;luisp=0;DC_tien=0;DC_lui=0;
gap_nha=0;nang_ha=0;quayphai=0;quaytrai=0;
}
}
}
void chayct()
{
lcd_clear();
lcd_gotoxy(0,1);
lcd_putsf("da an start");
delay_ms(200);
luisp=0;
daysp=1;
while(j==1)
{
if(cbsp==1&vitri==0)
{
delay_ms(200);
luisp=0;
daysp=1;
delay_ms(200);
daysp=0;
y=0;z=0;
}
////////////////////////////////////////
if(vitri==1&vatden==0&kimloai==0)
{
lcd_gotoxy(0,0);
lcd_putsf("SP LOAI BO");
lcd_gotoxy(0,1);
lcd_putsf("BO VAO KHO 1");
delay_ms(300);
gap();
x=1;
}
if(HVNha==0&x==1)
{
DC_tien=0;
lcd_gotoxy(0,0);
lcd_putsf("dung lai");
delay_ms(300);
gap_nha=0;
lcd_gotoxy(0,0);
lcd_putsf("nha sp");
delay_ms(200);
DC_lui=1;
y=1;
lcd_gotoxy(0,0);
lcd_putsf("lui ve");
}
//////////////////////////////////////
if(vatden==1&vitri==1)
{
lcd_gotoxy(0,0);
lcd_putsf("VAT DEN");
lcd_gotoxy(0,1);
lcd_putsf("BO VAO KHO 2");
delay_ms(300);
gap();
x=2;
}
if(kho2==1&x==2)
{
quaytrai=0;
delay_ms(300);
gap_nha=0;
delay_ms(300);
quayphai=1;
x=0;
z=1;
}
//////////////////////////////////////
if(kimloai==1&vitri==1)
{
lcd_gotoxy(0,0);
lcd_putsf("KIM LOAI");
lcd_gotoxy(0,1);
lcd_putsf("BO VAO KHO 3");
delay_ms(300);
gap();
x=3;
}
if(kho3==0&x==3)
{
quaytrai=0;
delay_ms(300);
gap_nha=0;
delay_ms(300);
quayphai=1;
x=0;
z=1;
}
//////////////////////////////////
if(HVNha==0&x>1)
{
DC_tien=0;
lcd_gotoxy(0,0);
lcd_putsf("dung lai");
delay_ms(300);
quaytrai=1;
}
//////////////////////////////////
if(DC_tien==1)
{
DC_lui=0;
}
//////////////////////////////////////
if(HVGap==0&y==1)
{
DC_lui=0;
y=0;
delay_ms(300);
lcd_clear();
delay_ms(200);
lcd_gotoxy(0,1);
lcd_putsf("moi bo sp");
}
if(kho1==1&z==1)
{
quayphai=0;
lcd_gotoxy(0,0);
lcd_putsf("dung quay");
delay_ms(200);
DC_lui=1;
z=0;
y=1;
lcd_gotoxy(0,0);
lcd_putsf("DC lui");
}
}
}
void gap(void)
{
lcd_gotoxy(0,0);
lcd_putsf("THUC HIEN GAP");
delay_ms(400);
nang_ha=1;
lcd_gotoxy(0,0);
lcd_putsf("ha tay gap");
delay_ms(400);
gap_nha=1;
lcd_gotoxy(0,0);
lcd_putsf("gap sp");
delay_ms(400);
luisp=1;
delay_ms(400);
nang_ha=0;
lcd_gotoxy(0,0);
lcd_putsf("nang sp");
delay_ms(400);
DC_tien=1;
}
Download avr.rar - Mup5.Com - Mobile Upload File - Free Upload File For Mobile đây là file mô phỏng của em.mong mọi người giúp đỡ
Comment