Giáo trình Vi điều khiển AVR
Tóm tắt Giáo trình Vi điều khiển AVR: ... { PORTB=0x92; break; } // So 5 case 6: { PORTB=0x82; break; } // So 6 case 7: { PORTB=0xF8; break; } // So 7 case 8: { PORTB=0x80; break; } // So 8 case 9: { PORTB=0x90; break; } // So 9 } } void hienthi(int n) { int a,b,c,d; // Lay cac so cac hang a= n/1000; // lay ha....Thực hành: Khởi tạo cho LCD và DS1307 như sau: 32 DKS_GROUP Microcontroller Training Center DKS Group www.EmbestDKS.com Khởi tạo cho LCD- PORT B Khởi tạo I2C Khởi tạo DS1307 Trong tab các chip ta chọn chíp DS1307, check vào Enabled để xác định sử dụng DS1307 và trong ô Square W...aining Center DKS Group www.EmbestDKS.com 1.Yêu cầu: Điều khiển led đơn trên KIT AVR 03 bằng máy tính. Đo kết quả ADC từ biến trở và cảm biến nhiệt LM35 hiển thị lên máy tính. • Điều khiển led: Tạo một Form bằng VB như sau: Trong FORM có: 1 đối tượng picturebox chứa logo của DKS. Có...
up www.EmbestDKS.com
list Freq: Chọn 1 Hz để khởi tạo cho chân output của DS1307 cứ 1 s có một
xung ra, trong mạch chân đó nối với 1 led và khởi tạo vừa rồi làm cho led đó
nhấp nháy với tần số 1 Hz. Sau đó chọn File Æ Save, Generate and Exit.
Được cửa sổ soạn thảo code.
Sơ đồ làm việc với DS1307 như sau:
Khởi tạo I2C
Khởi tạo DS1307
Thiết lập thời
gian cho DS1307
Đọc thời gian từ
DS1307 (1Hz)
Hiển thị ra LCD
thời gian
Coding như sau:
Bổ xung thư viện delay.h vào đầu chương trình.
34
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Ngay trước vòng while(1) trong hàm main bổ xung câu lệnh đặt thời gian và
ngày tháng cho RTC. I2C, DS1307, LCD đã khởi tạo bằng CodeWinzard
AVR.
Để có thể đọc được thời gian ta dùng hàm rtc_get_time() và rtc_get_date có
sẵn trong thư viện DS1307.h.( Để tham khảo các hàm có thể mở Help tương
tự như tham khảo các hàm của LCD ở bài trước.)
35
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Chúng ta phải khai báo 3 biến để lưu thông tin về thời gian là giờ h; phút m;
giây s và 3 biến lưu thông tin về ngày tháng là ngày day; tháng month; năm
year ngay phía trước hàm main như sau:
Để hiển thị các số ra LCD ta phải viết thêm một hàm LCD_putnum như sau:
Chương trình chính trong vòng while(1) như sau:
36
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Dịch và nạp chương trình, xem kết quả.
37
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
1.Yêu cầu:
- Biết khởi tạo RS232 trong CodeWinzard AVR.
- Viết chương trình nhận dữ liệu từ cổng COM PC và truyền lên cổng
COM đúng dữ liệu đó.
- Các thuộc tính và các control trong Visual Basic 6.0.
- Tự tạo một Project trong Visual Basic 6.0 truyền dữ liệu xuống cổng
COM và đọc dữ liệu từ cổng COM lên.
2.Mô tả: Cổng nối tiếp trên KIT.
38
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
3.Thực hành:
Các bước khởi tạo cho cổng nối tiếp dùng CodeWinzard như sau:
Khởi tạo RS232
Trong tab USART check vào các ô Receiver để cho phép nhận dữ liệu; Rx
Interrupt để nhận dữ liệu sử dụng ngắt; Transmitter để cho phép truyền dữ
liệu; Tx Interrupt để truyền dữ liệu sử dụng ngắt.
Các thông số còn lại: Receiver Buffer và Transmitter Buffer là bộ nhớ đệm
nhận và đệm truyền. Trong ứng dụng đơn giản chúng ta để mặc định là 8,
trong các ứng dụng truyền số lượng thông tin lớn ta có thể tăng bộ đệm để
tránh mất thông tin. Tốc độ baud mặc định là 9600 (bit/s). Các thông số của
bộ truyền: 8 bit, 1 bit dừng(stop), không ưu tiên. Chế độ truyền không đồng
bộ.
Theo yêu cầu là nhận dữ liệu và truyền lên dữ liệu đó ta viết code như sau.
Trước tiên ta khai báo một biến trung gian để truyền nhận dữ liệu và khởi
tạo cho PORTA là đầu ra như sau:
39
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Trong hàm main ta viết code như sau:
40
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Chọn File Æ Save All. Ấn F9 để dịch chương trình. Nạp chương trình vào
AVR.
41
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
4.Visual Basic và các control đơn giản.
Khởi tạo Project trong VB. Kích đúp và biểu ICON của VB được cửa sổ
New Project như sau:
Hoặc khi đã mở một Project sẵn muốn tạo một Project mới có thể sử dụng
Menu: File Æ New Project (phím tắt Ctrl + N). Như sau:
42
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Trong cửa sổ New Project có 3 tab: New để tạo Project mới; Existing để mở
một Project có sẵn; Recent: để mở các Project gần đây. Trong tab new có
nhiều loại Project : Standar Exe, ActiveX exe, ActiveX DLL, . Chúng ta
chọn Standar EXE và chọn Open được Project như sau:
Để sửa tên của Form trong thuộc tính điều khiển của FORM ta sửa Text
trong ô Caption như sau:
43
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Ví dụ : Tạo FORM đơn giản như sau: truyền và nhận dữ liệu khi nhấp vào
một nút. Đầu vào sẽ có 1 tham số a để truyền, đầu ra có 1 thông số- nhận dữ
liệu- như vậy ta sẽ dùng 2 textbox control, ngoài ra ta cần sử dụng 3 nút bấm
button để xác định sự kiện truyền, nhận và thoát.
Để có thể đưa một control vào trong FORM, ở phần CAC DIEU KHIEN CO
BAN ta chỉ cần nhấp đúp vào các control mới dùng. Ví dụ lấy textbox
control.
Trong phần thuộc tính của Textbox Text1, tìm ô text và xoá chữ Text1 đi.
Để ô Text 1 thành trắng, để di chuyển các control ta nhấp trái chuột và dữ
chặt và di chuyển tới vị trí thích hợp.
44
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Đường biên của các Control đều có các điểm tô màu đậm, đưa trỏ chuột tới
đó trỏ chuột biến thành mũi tên, nhấp trái chuột và dữ chặt để thay đổi kích
thước của các control. Lấy LABEL như sau:
Thay đổi Caption của Label thành MSCOM CONTROL BASIC .
Lấy các button và sửa các thuộc tính tương tự như sau:
45
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Tương tự lấy các text và các label và sắp xếp lại như sau:
46
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Trong trường hợp các bạn kích đúp chuột vào một điều khiển nó sẽ hiện ra
cửa sổ CODE, các bạn có thể tắt nhờ dấu X trên góc trên phải mà hình :
Trong ô thuộc tính của các control chúng ta có thể thay đổi các thông số như
tên của các control ví dụ: Name, Font chữ hiển thị, mầu sắc chữ, mầu nền,
v.v.Như vậy ta đã tạo ra một FORM các tham số a,b hiện thị bởi các
textbox1,2. Nút truyền là Command1, nút nhận là thoát là Command2, nút
thoát là Command3.
Form chạy như sau: Nhập thông số vào các text 1, nhấn nút Truyền thì dữ
liệu trong text1 được truyền ra cổng COM. Nhấn nút nhận thì dữ liệu nhận
được sẽ hiển thị lên text 2. Phím thoát để thoát khỏi chương trình.
Vì Control để điều khiển cổng COM – MSCOM không phải control cơ bản
nên nó không hiển thị trên tools, chúng ta phải lấy trong thư viện ra. Như
sau: kích chuột phải vào thanh các control đơn giản chọn Component .
47
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Được cửa sổ Components như sau:
48
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Tìm dòng Microsoft Comm Control 6.0 và check vào đó và nhấn OK. Bây
giờ trên thanh công cụ có thêm một biểu tượng mới là MSCOMM control.
Kích đúp vào đó để lấy control vào Form.như sau:
Thuộc tính mặc định cho MSCOMM như sau:
49
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Để viết Code cho đối tượng nào ta chỉ cần nhấp đúp chuột vào đối tượng đó
cửa sổ viết code sẽ hiện ra. Khi chạy chương trình thì trước hết ta cần khởi
tạo cho control MSCOMM. Như vậy ta phải khởi tạo trong hàm Form_Load.
Ta chuyển trỏ chuột để nó đánh dấu Form ( Nhấp đúp vào khoảng trống trên
Form) thực hiện như sau:
Ta được cửa sổ soạn code như sau:
50
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
VB tự khởi tạo cho ta một hàm khi load form. Viết mã lệnh như sau:
Để viết mã lệnh cho nút truyền kích đúp chuột vào button truyền:
Mã lệnh như sau:
51
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Tương tự làm cho nút nhận để viết code. Mã lệnh như sau:
Tương tự làm cho nút EXIT:
Chọn File Æ Save Project và File Save Form với tên là tut. Để lưu lại
Project vừa tạo.
Chọn File Æ Make tut.exe để tạo file thực thi và chạy như phần mềm thông
thường.
52
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Được kết quả như sau:
Cắm cổng COM vào và test chương trình.
53
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
1.Yêu cầu:
Điều khiển led đơn trên KIT AVR 03 bằng máy tính.
Đo kết quả ADC từ biến trở và cảm biến nhiệt LM35 hiển thị lên máy
tính.
• Điều khiển led:
Tạo một Form bằng VB như sau:
Trong FORM có: 1 đối tượng picturebox chứa logo của DKS. Có 10 đối
tượng button trong đó 8 đối tượng button Led1...Led8 là một mảng button có
tên từ Command1(0) ... Command1(7). Muốn tạo một mảng button ta chỉ
việc lấy ra 8 đối tượng button và sửa tên tất cả chúng thành Command
1. Hai button còn lại là Phản hồi và Exit. Có một textbox để hiển thị dữ liệu
phản hồi.
Hoạt động của phần mềm như sau:
Khi nhấn vào button Led 1 thì truyền dữ liệu là 0x01 xuống cổng nối tiếp
của PC, AVR nhận được và đưa dữ liệu đó ra cổng của AVR để 1 led trên
Kit sáng. Tương tự cho bấm các nút Led còn lại. Đồng thời AVR gửi luôn
giá trị vừa nhận được lên PC. Và khi bấm nút phản hồi thì dữ liệu đó hiện ra
trên Textbox. Khi nhấn nút Exit thì thoát khỏi phần mềm.
54
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com 55
Thực hành:
Phần mềm trên VB Code như sau:
Private Sub Command1_Click(Index As Integer)
If Index = 0 Then
MSComm1.Output = Chr$(1)
End If
If Index = 1 Then
MSComm1.Output = Chr$(2)
End If
If Index = 2 Then
MSComm1.Output = Chr$(4)
End If
If Index = 3 Then
MSComm1.Output = Chr$(8)
End If
If Index = 4 Then
MSComm1.Output = Chr$(16)
End If
If Index = 5 Then
MSComm1.Output = Chr$(32)
End If
If Index = 6 Then
MSComm1.Output = Chr$(64)
End If
If Index = 7 Then
MSComm1.Output = Chr$(128)
End If
End Sub
Private Sub Command2_Click()
MSComm1.PortOpen = False
End
End Sub
Private Sub Command3_Click()
If MSComm1.Input = "" Then
Exit Sub
Else
Text1.Text = Asc(MSComm1.Input)
End If
End Sub
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
End Sub
Firm ware:
Khởi tạo trong CodeVision AVR cho phép cổng nối tiếp hoạt động, PORT
D là out put như các bài trước đã học. Sau đó lập trình cho hàm main như
sau:
Trong hàm main có sử dụng thêm một biến temp nên dĩ nhiên các bạn phải
khai báo thêm biến đó ở phía ngoài hàm main.
Nạp chương trình vào chip AVR
Kết nối dây cổng Com từ KIT và cổng Com máy tính và test kết quả.
56
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
Đo ADC từ biến trở và LM35.
Trên VB tạo ra một giao diện phần mềm như sau:
Form gồm có:
4 label để hiển thị như hình.
2 text box để hiển thị dữ liệu.
2 button: Thu du lieu và Thoat khỏi phần mềm.
Code trên VB như sau:
Private Sub Command1_Click()
If MSComm1.Input = "" Then
Exit Sub
Else
Text1.Text = Asc(MSComm1.Input)
Text2.Text = Asc(MSComm1.Input)
End If
End Sub
Private Sub Command2_Click()
MSComm1.PortOpen = False
57
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
End
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
End Sub
Firm Ware:
Khởi tạo bằng CodeWinzard AVR cho cổng nối tiếp USART hoạt
động, cho phép ADC hoạt động(interrupt) như các bài trước sau đó viết code
cho hàm main như sau:
Dịch nạp chương trình và test
.
58
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com
1.Yêu cầu :
Hiểu nguyên lí điều khiển động cơ bước đơn cực.
Điều khiển được bằng AVR.
2.Lý thuyết:
2.1.Giới thiệu về động cơ bước:
Động cơ bước thực chất là một động cơ đồng bộ dùng để biến đổi các
tín hiệu điều khiển dưới dạng các xung điện rời rạc kế tiếp nhau thành các
chuyển động góc quay hoặc các chuyển động của roto và có khả năng cố
định roto vào những vị trí cần thiết. Động cơ bước làm việc được là nhờ có
bộ chuyển mạch điện tử đưa các tín hiệu điều khiển vào stato theo một thứ
tự và một tần số nhất định. Tổng số góc quay của roto tương ứng với số lần
chuyển mạch, cũng như chiều quay và tốc độ quay của roto, phụ thuộc vào
thứ tự chuyển đổi và tần số chuyển đổi. Khi một xung điện áp đặt vào cuộn
dây stato (phần ứng) của động cơ bước thì roto (phần cảm) của động cơ sẽ
quay đi một góc nhất định, góc ấy là một bước quay của động cơ. Khi các
xung điện áp đặt vào các cuộn dây phần ứng thay đổi liên tục thì roto sẽ
quay liên tục. (Nhưng thực chất chuyển động đó vẫn là theo các bước rời
rạc).
2.2.Hệ thống điều khiển động cơ bước.
Một hệ thống có sử dụng động cơ bước có thể được khái quát theo sơ
đồ sau.
59
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com 60
.C.SUPPLY: Có nhiệm vụ cung cấp nguồn một chiều cho hệ thống.
guồn một chiều này có thể lấy từ pin nếu động cơ có công suất nhỏ. Với
ác động cơ có công suất lớn có thể dùng nguồn điện được chỉnh lưu từ
guồn xoay chiều.
ONTROL LOGIC: Đây là khối điều khiển logic. Có nhiệm vụ tạo ra tín
iệu điều khiển động cơ. Khối logic này có thể là một nguồn xung, hoặc có
ể là một hệ thống mạch điện tử. Nó tạo ra các xung điều khiển. Động cơ
bước có thể điều khiển theo cả bước h c theo nửa bước.
OWER DRIVER: Có nhiệm vụ cấp nguồn điện đã được điều chỉnh để
ưa vào động cơ. Nó lấy điện từ nguồn cung cấp và xung điều khiển từ khối
iều khiển để tạo ra dòng điện cấp cho động cơ hoạt động.
TEPPER MOTOR: Động cơ bước. Các thông số của động cơ gồm có:
ước góc, sai số bước góc, mômen kéo, mômen hãm, mômen làm việc.
Đối với hệ điều khiển động cơ bước, ta thấy đó là một hệ thống khá
ơn giản vì không hề có phần tử phản hồi. Điều này có được vì động cơ
ước trong quá trình hoạt động không gây ra sai số tích lũy, sai số của động
D
N
c
n
C
h
th
oặ
P
đ
đ
S
B
đ
b
cơ do sai số trong khi chế tạo. Việc sử dụng động cơ bước tuy đem lai độ
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com 61
bước góc đang ngày càng được cải thiện.
.
chính xác chưa cao nhưng ngày càng được sử dụng phổ biến. Vì công suất
và độ chính xác của
Bước góc của động cơ bước được chế tạo theo bảng tiêu chuẩn sau:
3.Nguyên tăc điều khiển động cơ bước đơn cực:
Động cơ bước đơn cực, ( có thể là động cơ vĩnh cửu hoặc động cơ hỗn
hợp ) có 5,6 hoặc 8 dây ra thường được quấn như sơ đồ dưới. Khi dùng, các
đầu nối trung tâm thường được nối vào cực dương nguồn cấp, và hai đầu
còn lại của mỗi mấu lần lượt nối đất để đảo chiều từ trường tạo bởi quận đó
Hình 1-5 : Động cơ đơn cực.
Tín hi
Winding 1a 1100110011001100110011001
Winding 1b 0011001100110011001100110
Winding 2a 0110011001100110011001100
Winding 2b 1001100110011001100110011
ệu điều khiển. Điều khiển đủ bước (full step) :
Winding 1a 1000100010001000100010001
Winding 1b 0010001000100010001000100
Winding 2a 0100010001000100010001000
Winding 2b 0001000100010001000100010
time --->
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com 62
time --->
Điều khiển nửa bước ( half step )
Winding 1a 11000001110000011100000111
Winding 1b 00011100000111000001110000
Winding 2a 01110000011100000111000001
Winding 2b 00000111000001110000011100
time --->
4.Mạch điều khiển đ
năng sau đây:
.
ứ tự kích từ.
dao động cơ học.
ng. Thành phần của mạch là các bán
động cơ bước theo thứ tự 1-2-3-4 do
ất T1 đến T4 thực hiện.Với việc thay đổi vị trí bộ
theo chiều kim đồng hồ hoặc ngược lại.
ộng cơ bước:
Mạch điều khiển động cơ bước bao gồm một số chức
Tạo các xung với những tần số khác nhau
Chuyển đổi các phần cho phù hợp với th
Làm giảm các
Đầu vào của mạch điều khiển là các xu
dẫn, vi mạch. Kích thích các phần của
các transistor công su
chuyển mạch, động cơ có thể quay
Điện áp được cấp qua các khoá chuyển để nuôi các cuộn dây, tạo ra từ
trường làm quay rotor. Các khoá ở đây không cụ thể, có thể là bất cứ thiết bị
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com 63
y
tính. Với động cơ nhỏ có dòng cỡ 500 mili Ampe, có thể dùng IC loại dãy
darlington collector hở như :
ULN2003, ULN2803 ( Allegro Microsystem)
DS2003 (National Semiconductor), MC1413 ( Motorola)
hù hợp TTL, các đầu emitor được nối với chân
i diode. Một mắc giữa emitor
iode thứ hai nối
collector với chân 9. Nếu chân 9 nối với cực dương của cuộn dây, tạo thành
mạch bảo vệ cho transitor.
Với các động cơ lớn có dòng > 0.5A các IC họ ULN không đáp ứng
được ta có thể dùng các Tranzitor trường(IRF).Một số loại IRF thông dụng:
IRF540 tranzitor ngược có thể chịu dòng đến 20A
IRF640 tranzitor ngược có thể chịu dòng đến 18A
đóng cắt nào điều khiển được như rơle, transitor công suất... Tín hiệu điều
khiển có thể được đưa ra từ bộ điều khiển như vi mạch chuyên dụng, má
IC họ ULN200x có đầu vào p
8. Mỗi transitor darlington được bảo vệ bởi ha
tới collector chặn điện áp ngược lớn đặt lên transitor. D
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com 64
IRF250 tranzitor ngược có thể chịu dòng đến 30A .
Sơ đồ mạch được thiết kế như sau:
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com 65
5.Code :
#include
#include
// Khai bao bien
unsigned char stepA[] = {0xFF,0xFE,0xFD,0xFB,0xF7},
stepB[] = {0xFF,0xEF,0xDF,0xBF,0x7F},
stepC[] = {0xFF,0xEF,0xDF,0xBF,0x7F};
unsigned char indexA, indexB, indexC;
unsigned char n_data;
unsigned char n_step=10;
unsigned int n_step3=5000,n_i;
//-------------------
// Declare your global variables here
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=0xFF;
DDRA=0xFF;
// 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=0xFF;
DDRB=0xFF;
// 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=0xFF;
DDRC=0xFF;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
State6=T State5=T State4=T State3=T State2=T State1=T State0=T // State7=T
PORTD=0xFF;
DDRD=0xFF;
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com 66
initialization
ystem Clock
lock value: Timer 1 Stopped
.
ow Interrupt: Off
Interrupt: Off
Compare A Match Interrupt: Off
terrupt: Off
;
R1H=0x00;
;
alization
top=FFh
isconnected
SSR=0x00;
zation
// Timer/Counter 0
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: S
// C
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overfl
// Input Capture
//
// Compare B Match In
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00
IC
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00
// Timer/Counter 2 initi
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal
// OC2 output: D
A
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initiali
DKS_GROUP Microcontroller Training Center
DKS Group www.EmbestDKS.com 67
CUCR=0x00;
) initialization
ialization
Off
er/Counter 1: Off
ode here
>3) indexA = 1;
>3) indexB = 1;
++>3) indexC = 1;
stepA[indexA] & stepB[indexB];
pC[indexC];
);
// INT0: Off
// INT1: Off
// INT2: Off
M
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s
TIMSK=0x00;
// Analog Comparator init
// Analog Comparator:
// Analog Comparator Input Capture by Tim
ACSR=0x80;
SFIOR=0x00;
while (1)
{
// Place your c
if(indexA ++
if(indexB ++
if(indexC
PORTA =
PORTC = ste
//-------
delay_ms(500
}}
File đính kèm:
giao_trinh_vi_dieu_khien_avr.pdf



