Tải bản đầy đủ (.pdf) (165 trang)

báo cáo thực hành kỹ thuật vi xử lý PTIT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.42 MB, 165 trang )



PTIT
Giảng viên hướng dẫn: Phạm Thế Duy
Sinh viên thực hiện: Đinh Tuấn Hải
Đ09VTA1
409160010



Báo cáo Kỹ thuật Vi xử lý
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 1


HC VIN CÔNG NGH N THÔNG
 TI THÀNH PH H CHÍ MINH




BÁO CÁO
MÔN KỸ THUẬT VI XỬ LÝ


TPHCM - 2011
GING DN:

Phm Th Duy


SINH VIÊN THC HIN:

n Hi
L
MSSV: 409160010
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 2



Lưu ý:
+ Các mạch mô phỏng được thực hiện trên Proteus 7.8 SP2 và CodeVision 2.05.0
Professional với các điều kiện được ghi chú sẵn.
+ Các ghi chú trong code chỉ được ghi 1 lần, theo thứ tự xuất hiện của dòng lệnh. (Có
những code thừa nhưng do xuất hiện trước nên vẫn được ghi chú bình thường)
+ Các bài tập có sử dụng bộ định thời để chạy với ý nghĩa thời gian thực có thể hoạt
động sai khi sử dụng trên các máy tính khác, và phải hiệu chỉnh lại cho thích hợp. Các bài tập
này mang ý nghĩa thuật toán, giải thuật nhiều hơn ý nghĩa chính xác về mặt thời gian. Tất cả
các bài đã được hiệu chỉnh để chạy chính xác trên hệ thống máy tính của cá nhân người lập
trình, do vậy có thể mang tính chủ quan.


TP.HCM ngày 10 tháng 10 năm 2011
Sinh viên thực hiện
Đinh Tuấn Hải









PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 3


MỤC LỤC

 4

 17

 27

 38

 51


 67

BÀI 7:  83

BÀI 8: GIAO TIP NI TIP USART 96


BÀI 9: THC HING H N T 115

U GIAO THÔNG 136

PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 4


/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3a Evaluation
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.


Project :
Version :
Date : 8/21/2011
Author : Freeware, for evaluation and
Company :
Comments:


Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model : Small
External RAM size : 0

PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 5

Data Stack size : 256
*****************************************************/

#include <mega16.h>
#include <delay.h>
#include <stdio.h>
// Declare your global variables here
int i,j; //khai báo biến
unsigned char phu, phu2;
void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTA=0x00;
DDRA=0xFF; //Port A là OUT

// Port B initialization
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 6


// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00; //Port B là IN

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00; //Port C là IN

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00; //Port D là IN

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 7

// OC0 output: Disconnected
TCCR0=0x00; //Các thanh ghi cho Timer/Counter0
TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00; //Các thanh ghi cho Timer/Counter1
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 8

ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;


// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00; //thanh ghi cho Timer/Counter2
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off //ngắt ngoài
// INT1: Off
// INT2: Off
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 9

MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00; //Cài đặt ngắt cho các bộ Timer/Counter

// USART initialization
// USART disabled
UCSRB=0x00; //Chức năng USART

// Analog Comparator initialization

// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80; //Bộ so sánh tương tự - Analog Comparator
SFIOR=0x00;

// ADC initialization
// ADC disabled
ADCSRA=0x00;

// SPI initialization
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 10

// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

while (1)
{
// Place your code here
switch(PINB)
{
case 0b00000001: //Cau 1: 1 LED sang doi qua lai
{
PORTA = 0b10000000;

delay_ms(20); //tạo độ trễ để mắt người có thể theo dõi kịp
for (i=0; i<=6; i++) //chay LED qua phai 7 lan
{
PORTA = PORTA >> 1; //Port A dịch qua phải 1 bit
delay_ms(20);
}
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 11


for (i=6; i>=1; i ) //chay LED qua trai 7 lan
{
PORTA = PORTA << 1;
delay_ms(20);
}
break;
};
case 0b00000010: //Cau 2: 8 LED sang dan sau do tat dan
{
PORTA = 0b00000000;
phu = 0b10000000;
for (i=0; i<=7; i++) //sang dan tu trai qua phai
{
PORTA = phu;
phu = phu | (phu >> 1);
delay_ms(20);
}
for (i=0; i<=7; i++) //tat dan

{
PORTA = PORTA >> 1;
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 12

delay_ms(20);
}
break;
};
case 0b00000100: //Cau 3: 8 LED sang tu hai ben vao roi tat tu hai ben vao
{
phu = 0b10000000;
phu2 = 0b00000001;
PORTA = 0b00000000;
for (i=1; i<=4; i++) //sang tu hai ben vao
{
PORTA = phu + phu2 + PORTA;
phu = phu >> 1;
phu2 = phu2 <<1;
delay_ms(20);
};
phu = 0b10000000;
phu2 = 0b00000001;
for (i=1; i<=4; i++) //tat tu hai ben vao
{
PORTA = PORTA - phu - phu2 ;
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]


2011 Trang 13

phu = phu >> 1;
phu2 = phu2 <<1;
delay_ms(20);
}
break;
}
case 0b00001000: //Cau 4: 1 LED sang chay tu trai qua phai roi dung lai
{

phu2 = 0b00000000;
for (i=7; i>=0; i )
{
phu = 0b10000000;
for (j=0; j<=i; j++)
{
PORTA = phu + phu2;
delay_ms(20);
phu = phu >> 1;

}
phu2 = PORTA;
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 14

}

delay_ms(20);
break;
}
case 0b00010000: //Cau 5: 8 LED chop tat
{
PORTA = 0b11111111;
delay_ms(20);
PORTA = 0b00000000;
delay_ms(20);
break;
};
case 0b00100000: //Cau 6: Cac LED sang tat xen ke va nguoc lai
{
PORTA = 0b10101010;
delay_ms(20);
PORTA = 0b01010101;
delay_ms(20);
break;
};
case 0b01000000: //Cau 7: 4 LED sang 4 LED tat va nguoc lai
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 15

{
PORTA = 0b11110000;
delay_ms(20);
PORTA = 0b00001111;
delay_ms(20);

break;
};
case 0b10000000: //Cau 8: 2 LED sang chay vao tu hai ben va chay ra hai ben
{
phu = 0b10000000;
phu2 = 0b00000001;
for (i=0; i<=7; i++)
{
PORTA = phu + phu2;
delay_ms(20);
phu = phu >> 1; //phu cho led chay qua phai, phu2 cho led chay
qua trai
phu2 = phu2 << 1;
}
break;
}
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 16


}
};
}

Ghi chú: Bật lần lượt các công tắc từ 1 tới 8 trong file mô phỏng để thực hiện lần lượt 8 yêu cầu
của đề bài.

PB0/T0/XCK

1
PB1/T1
2
PB2/AIN0/INT2
3
PB3/AIN1/OC0
4
PB4/SS
5
PB5/MOSI
6
PB6/MISO
7
PB7/SCK
8
RESET
9
XTAL2
12
XTAL1
13
PD0/RXD
14
PD1/TXD
15
PD2/INT0
16
PD3/INT1
17
PD4/OC1B

18
PD5/OC1A
19
PD6/ICP1
20
PD7/OC2
21
PC0/SCL
22
PC1/SDA
23
PC2/TCK
24
PC3/TMS
25
PC4/TDO
26
PC5/TDI
27
PC6/TOSC1
28
PC7/TOSC2
29
PA7/ADC7
33
PA6/ADC6
34
PA5/ADC5
35
PA4/ADC4

36
PA3/ADC3
37
PA2/ADC2
38
PA1/ADC1
39
PA0/ADC0
40
AREF
32
AVCC
30
U1
ATMEGA16
D1
LED-YELLOW
D2
LED-YELLOW
D3
LED-YELLOW
D4
LED-YELLOW
D5
LED-YELLOW
D6
LED-YELLOW
D7
LED-YELLOW
D8

LED-YELLOW
0
SW1
SW-SPDT
SW2
SW-SPDT
SW3
SW-SPDT
SW4
SW-SPDT
SW5
SW-SPDT
SW6
SW-SPDT
SW7
SW-SPDT
SW8
SW-SPDT
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 17











/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3a Evaluation
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.


Project : Bai thuc hanh so 2
Version :
Date : 8/22/2011
Author : Freeware, for evaluation and
non-commercial use only
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 18

Company :
Comments: Dinh Tuan Hai - D09VTA1


Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/


#include <mega16.h>
#include <delay.h>

// Declare your global variables here
unsigned char led[10] =
{0b11111100,0b01100000,0b11011010,0b11110010,0b01100110,0b10110110,0b10111110,0b
11100000,0b11111110,0b11110110,}; // dinh nghia cac chu so tren LED
unsigned char pos[5] = {0b00000111,0b00001011,0b00001101,0b00001110,0b00001111};
//dinh nghia vi tri chon LED tren bang LED (position)
unsigned char dis[4] = {0,0,0,0}; //dinh nghia so de hien thi tren LED (display)
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 19

int i,j,k;
void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 20

PORTC=0x00;
DDRC=0xFF;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;


// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 21

// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
PTIT

[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 22

// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// USART disabled
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 23


UCSRB=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC disabled
ADCSRA=0x00;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

while (1)
PTIT
[BÁO CÁO KỸ THUẬT VI XỬ LÝ]

2011 Trang 24

{
// Place your code here
switch(PINB)
{

case 0b00000001: // nhan SW1 de hien 4 so lien tuc
{
for (i=0;i<=3;i++)
{
PORTD = pos[i]; //hien thi so o vi tri i
PORTC = led[i+1]; //dịch
delay_ms(2);
PORTD = pos[4];
}
break;
}
case 0b00000010: // nhan SW2 de chay 0-9
{
for (i=0; i<=9; i++)
{
dis[3] = led[i];
for (k=0; k<=5; k++) //giam toc do chay so lai

×