BAI GIANG CHO 8051 voi ngon ngu c

119 310 0
BAI GIANG CHO  8051 voi ngon ngu c

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

DKS_GROUP Microcontroller Tranning Center DKS_GROUP IE IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0 Microcontroller Tranning Center EA ET2 ES ET1 EX1 EX0 ET0 (0: không cho phép; 1: cho phép) Cho phép/ không cho phép toàn cục Không sử dụng Cho phép ngắt định thời Cho phép ngắt port nối tiếp Cho phép ngắt cho định thời Cho phép ngắt từ bên (ngắt 1) Cho phép ngắt từ bên (ngắt 0) Cho phép ngắt định thời Chú ý: ghi bản, nhớ tên ghi, tên bít ghi, chức ghi bít ghi 1.8)Giới thiệu sơ qua nguồn ngắt: Ngắt Reset hệ thống Cờ RST Địa vector 0000H DKS_GROUP Microcontroller Tranning Center Ngắt Bộ định thời Ngắt Bộ định thời Port nối tiếp Bộ định thời IE0 TF0 IE1 TF1 RI TI TF2 EXF2 Timer 0003H 000BH 0013H 001BH 0023H 002BH Program excution without interrut Main Program ISR * Main ** ISR * Main ISR ** * Main ** Main Program excution with interrupt Một ch-ơng trình ngắt chạy liên tục, ch-ơng trình có ngắt điều kiện ngắt đ-ợc đảm bào trỏ nhảy sang hàm ngắt thực xong hàm ngắt lại quay chỗ cũ thực tiếp ch-ơng trình Tôi có ví dụ nh- sau: Bạn ăn cơm , có tiếng điện thoại , bạn đạt bát cơm nghe điện thoại , nghe xong lại quay b-ng bát cơm lên ăn tiếp Thì trình ăn cơm bạn ch-ơng trình chính,có điện thoại gọi đến điều kiện ngắt, bạn nghe điện thoại thực ch-ơng trình ngắt(Interrupt Service Rountine),quay ăn cơm tiếp tiếp tục thực ch-ơng trình Ngắt ng-ời học vi điều khiển khó hiểu, đa số tài liệu không giải thích ngắt để làm Có nhiều loại ngắt khác nh-ng tất có chung đặc điểm, ngắt dùng cho mục đích đa nhiệm Đa tức nhiều, nhiệm tức nhiệm vụ Thực nhiều nhiệm vụ Các bạn nhìn vào tiền trình hàm main với ch-ơng trình có ngắt : DKS_GROUP Microcontroller Tranning Center Ch-ơng trình chạy, ngắt xảy ra, thực hàm ngắt quay lại ch-ơng trình Ch-ơng trình vi điều khiển khác với ví dụ ăn cơm nghe điện thoại chỗ , thời gian thực hàm lớn,thời gian thực hàm ngắt nhỏ, thời gian thực thi hàm ngắt không ảnh h-ởng nhiều đên chức hàm Nh- hàm ngắt bạn làm việc, hàm bạn làm việc nh- coi nh- bạn làm đ-ợc việc(đa nhiệm) quang thời gian t-ơng đối ngắn cõ mS, thực thời điểm vi điều khiển thực thi lệnh Ví dụ : Bạn thử nghĩ xem làm để vừa điều chế xung PWM để điều chỉnh tốc độ động , vừa đọc cảm biến đầu vào mà tốc độ động phụ thuộc đầu vào cảm biến DKS_GROUP Microcontroller Tranning Center BAI 2: NGÔN NGữ Lập trình C 21.)Cấu trúc ch-ơng trình: //Đính kèm file #include #include //Khai báo biến toàn cục unsigned char x,y; int z; long n=0; //Khai báo định nghĩa hàm void Hàm1(void) { //Các câu lệnh } void Hàm2(unsigned char x) { //Các câu lệnh } //Hàm bắt buộc ch-ơng trình phảI có void main(void) { //Các câu lệnh } Các câu lệnh hàm có lời gọi hàm khai báo kô Khi có lời gọi hàm ch-ơng trình nhảy đến hàm thực hàm xong trỏ lại quay ch-ơng trình chính(hàm main) thực tiếp hàm câu lệnh DKS_GROUP Microcontroller Tranning Center Các câu lệnh C kết thúc bng dấu ; Các lời giảI thích đ-ợc đặt dấu: Mở đầu bng /* kết thúc bng */ Nếu lời giảI thích dòng dùng dấu: // Khi lập trình nên giảI thích câu lệnh khối lệnh làm để sau ch-ơng trình lớn dễ sửa lỗi 2.2)Cỏc loi bin C: Dng bin S Bit S Byte Min giỏ tr char -128 n +127 unsigned char n 255 short 16 -32,768 n +32,767 unsigned s hort 16 n 65,535 int 16 -32,768 n +32,767 unsigned int 16 n 65,535 long 32 -2,147,483,648 n+2,147,483,647 unsigned long 32 n 4,294,697,295 Khai báo biến: Cấu trúc: Kiểubiến Tênbiến; VD: unsigned char x; Khi khai báo biến gán cho biến giá trị ban đầu VD : Thay vì: unsigned char x; x=0; Ta cần : unsigned char x=0; Có thể khai báo nhiều biến kiểu lúc VD: unsigned int x,y,z; Ngoi dựng cho vi iu khin trỡnh dch chuyờn dng cũn h tr cỏc loi bin sau: Dng bin S Bit S Byte Min giỏ tr DKS_GROUP Microcontroller Tranning Center bit 0;1 sbit 0;1 sfr n 255 sf16 16 n 65,535 Trong ú bit cú th dựng nh cỏc bin ca C++ nhng cỏc loi bin cũn li thỡ liờn quan n cỏc ghi hoc a ch cng ca 8051 Cú ngha l khai bỏo bin kiu bit thỡ khụng cn nh a ch RAM cho cỏc bin ú, cũn khai bỏo bin kiu sbit, sfr, sf16 thỡ phi nh rừ a ch RAM vỡ nú l cỏc dng bin c bit gi l special function registers (= cỏc ghi co chc nng c bit vit tt l SFR) VD: Bit Kiemtra; Sfr P10=0x90; Cỏc SFR khụng cn phi hc thuc ch cn bit, v chỳng c khai bỏo th vin AT89X51.H v AT89X52.H 2.3)Hm C: Hm C cú cu trỳc nh sau: Cú hai loi hm: Hm tr li giỏ tr: Cu trỳc: Kiugiatrhamtrli Tờnhm (Biờntruynvohm) { // Các câu lệnh xử lí } Vớ d : unsigned char Cong(unsigned char x, unsigned char y) { // Các câu lệnh xử lí } Hm khụng tr li giỏ tr: Cu trỳc: void Tờnhm (Biờntruynvohm) { // Các câu lệnh xử lí } Vớ d : void Cong(unsigned char x, unsigned char y) DKS_GROUP Microcontroller Tranning Center { // Các câu lệnh xử lí } Hàm có biến truyền vào không Ví dụ: Hàm biến truyền vào: unsigned char Tênhàm(void) { // Các câu lệnh xử lí } Hàm có biến truyền vào: void Tênhàm(unsigned char x) { // Các câu lệnh xử lí } Số biến truyền vào tùy ý(miễn đủ nhớ), ngăn cách dấu , Ví dụ: Void TênHàm(unsigned char x, unsigned char y, unsigned char z) { // Các câu lệnh xử lí } NgoàI riêng cho vi điều khiển phần phềm Keil C có loại hàm hàm ngắt: Cấu trúc: Void Tênhàm(void) interrupt nguồnngắt using băngthanhghi { } Hàm ngắt không đ-ợc phép trả lại giá trị hay truyền tham biến vào hàm Tên hàm Interrupt từ khóa hàm ngắt Nguồn ngắt từ tới theo bảng vector ngắt Ngắt Reset hệ thống Ngắt Bộ định thời Ngắt Bộ định thời Cờ RST IE0 TF0 IE1 TF1 Địa vector 0000H 0003H 000BH 0013H 001BH DKS_GROUP Port nối tiếp Bộ định thời Microcontroller Tranning Center RI TI TF2 EXF2 0023H 002BH Khong tinh ngat reset he thong bat dau dem tu ngat ngoai nguon ngat la Băng ghi ram chọn từ đến 2.4)Các toán tử bản: Phép gán: = VD: x=y; // x phảI biến y biến giá trị nh-ng phảI phù hợp kiểu Phép cộng: + Phép trừ: Phép nhân: * Phép chia: / Các toán tử logic: Bằng : == And: && Or: || Not: ! Dịch trái: > 2.5)Các cấu trúc lệnh rẽ nhánh, kiểm tra th-ờng dùng: Câu lệnh rẽ nhánh if: Cấu trúc: if (Điềukiện) { // Các câu lệnh xử lí } Giải thích: Nếu Điềukiện xử lí câu lệnh bên sai nhảy qua Câu lệnh lựa chọn switch: Cấu trúc: switch(Biến) { case giatrị1: { // Các câu lệnh break; } case giatrị2: { // Các câu lệnh break; } case giatrị3: { // Các câu lệnh break; } case giatrịn: { // Các câu lệnh break; } } GiảI thích : Tùy vào Biến có giatrị1 thực câu lệnh sau t-ơng ứng thoát khỏi cấu trúc nhờ câu lệnh break; Biến có giatrị2 thực câu lệnh sau t-ơng ứng thoát DKS_GROUP Microcontroller Tranning Center Biến có giatrịn thực câu lệnh sau t-ơng ứng thoát Câu lệnh vòng lặp xác định for: Cấu trúc: for( n=m; nl), n biến Thực lặp câu lệnh (l-m) lần Câu lệnh vòng lặp không xác định while: Cấu trúc: While( Điều kiện) { //Các câu lệnh } GiảI thích: Thực lặp câu lệnh điều kiện đúng, câu lệnh sai thi thoát khỏi vòng lặp 2.6) Bộ tiền xử lí: #define : Dùng để định nghĩa Ví dụ: #define dung #define sai có nghĩa dung có giá trị Trong ch-ơng trình có đoạn code nh- sau: bit kiemtra if (bit==dung) { // Các câu lệnh} if (bit==sai) { // Các câu lệnh} Việc giúp lập trình dễ sửa lỗi Một số web hay : www.dientuvietnam.net www.svbkol.org www.diendandientu.com www.microchip.com www.elechtro-tech-online.com www.diendansv.hutech.edu.vn www.ttvnol.com www.8052.com www.atmel.com www.keil.com www.iguanalabs.com DKS_GROUP Microcontroller Tranning Center Sau khi to song v cho ngt timer chy thỡ iu gỡ xy ra? Khi bt u cho timer chy thỡ b m ca timer s m dao ng ca thch anh, c 12 dao ng ca thch anh(1 chu kỡ mỏy), b m ca timer TL1(Timer Low1) s tng 1,cú thn núi timer m s chu kỡ mỏy i vi ch bớt TL1 l ghi bớt, l b m ca b nh thi rừ ri Nú m c t 0, n 255 Nu nú m n 256 thỡ b m trn, TL1 quay vũng li bng 0, v c ngt TF1(Timer Flag 1) t ng c gỏn lờn 1(bng phn cng ca vi iu khin) nh cụng tc t ng bt, v ngt xy Cũn vi ch 16 bớt, b m ca b nh thi cũn ghi bớt na l TH1(Timer high 1), nu cu hỡnh cho timer hot ng ch 16 bit thỡ TL1 trn nú s m sang TH1(TH1 s tng 1) Nh vy ta cú th m: 216 chu kỡ mỏy( ghi 8+8=16 bớt) Chỳ ý l b m trn ngt s xy Nu ta cn m 256 chu kỡ mỏy thỡ khi to ta cho TL1=0; , cũn nu khụng mun m 256 chu kỡ my m ta ch cn m 100 thụi ngt ó xy ri thỡ ta fi lm nh sau: 256-100 = 156; v khi to ta gỏn : TL1=155; vỡ m t 155 n 255 l 100 ln thỡ ngt xy Vi yờu cu ca bi To xung tn s 1Khz Chu kỡ = 1/103 = 0,001 giõy= mili giõy=1000 uS= 1000 chu kỡ mỏy Vi 10 cp tc , tc l bn phi to c xung 10%, 20%, 30%, 40%, , 90%, 100% xung nh sau: 5V 0V T : Chu kỡ 1000 miro giõy Khong thi gian xung kộo di 5V l T1 Xung 10% tc l T1/ T= 10%=1/10 Xung 20% T2/T=2/10PWM(Thay i rng xung) Bõy gi tụi mi xin núi v phn 7.3) Nguyờn lớ hot ng: - Xung PWM: a m transitor, xung vi rng ln hn transitor s m lõu hn ng c s quay nhanh hn,d nhiờn khụng tuyn tớnh Khụng cú xung ng c s khụng quay, cú xung 100% ng c s quay max.Tuy nhiờn xung phi ln hn mc no ú thỡ mi ng cho ng c DKS_GROUP Microcontroller Tranning Center Cỏc c tớnh ny cỏc bn tham kho giỏo trỡnh v mỏy in, khớ c in, nu cỏc bn cn thụng s chớnh xỏc cú th thay i 10 cp tc vi chu kỡ 1000uS, ta to cho ngt timer: 100 uS ngt ln Trong hm ngt kim tra xem ta cn cp xung bao nhiờu % thỡ ta s gỏn giỏ tr cho nú C th nh sau: * Hm to ngt Dựng ngt timer 0, 100 uS ngt ln, dựng ch bit t ng np li ca timer (vỡ mỡnh ch cn m n 100).TL0 np bng 156 i vi ch trn b m TL0 s quay vũng giỏ tr bng 0, nhng sau ú nú li c np giỏ tr lu TH0(giỏ tr np li), ú ta ch cn gỏn giỏ tr choTL0 v TH0 hm to, cũn cỏc ch khỏc 16 bit, timer counter bit, trn b m TL0 khụng c np li m ta phi t gỏn li giỏ tr cho nú hm ngt void khoitaotimer0(void)// Ham khoi tao { EA=0;// Cam ngat toan cuc TMOD=0x02;// Timer che bit auto reload TH0=0x9B;// Gia tri nap lai 155 doi so hex TL0=0x9B;// Gia tri khoi tao 155 doi so hex ET0=1;// Cho phep ngat timer EA=1;// Cho phep ngat toan cuc TR0=1;// Chay timer bat dau dem so chu ki may } DKS_GROUP Microcontroller Tranning Center DKS_GROUP Microcontroller Tranning Center * Hm ngt: unsigned char dem=0;// Khai bao bien dem de dem tu den 10 unsigned char phantramxung;// Bien chua phan tram xung(0 10) void timer0(void) interrupt //Ngat timer { TR0=0;// Dung chay timer TF0=0;// Xoa co, o che co tu duoc xoa,che khac can toi cu viet vao day dem++; if(dem[...]... project Bạn nên tạo mỗi một thư m c cho 1 project Rồi chọn Save DKS_GROUP Đư c hình sau: Microcontroller Tranning Center DKS_GROUP Microcontroller Tranning Center Trong này c 1 loạt c c hãng điện tử sản xuất 8051 Bạn lập trình cho con nào thì chọn con đấy ,kích chuột vào c c dấu + để mở rộng c c con IC c a c c hãng Ở đây ta lập trình cho AT8 9C5 1 c a hãng Atmel nên ta chọn như sau: DKS_GROUP Microcontroller... Ctrl+S Ho c chọn File  Save để nhớ file vừa soạn thảo DKS_GROUP Microcontroller Tranning Center C c bạn nhìn vào code c thể c c bạn đã hiểu con AT8 9C5 1 nó làm gì nếu c c bạn đã nắm vững c c bài trư c Còn nếu không hiểu thì tôi sẽ giải thích lại cho c c bạn Đây là sơ đồ nguyên lí c a 1 led Project là 8 led(vì để ph c vụ cho bài 3) nhưng tôi chỉ giải thích 1 led là c c bạn hiểu M c đích là làm con led... Microcontroller Tranning Center Khi chọn chip thì ngay lập t c cái bảng hiện ra 1 số tính năng c a chíp c c bạn c thể nhìn thấy 8051 based Fully Static 24Mhz … Nhap OK đư c cửa sổ như sau: DKS_GROUP Microcontroller Tranning Center Chọn No Chọn Yes chỉ làm cho file lập trình c a bạn thêm nặng Đư c cửa sổ sau: DKS_GROUP Microcontroller Tranning Center Để tạo 1 file code c c bạn chọn File  New ho c ấn Ctrl+N Như... DKS_GROUP Microcontroller Tranning Center DKS_GROUP Đư c cửa sổ như sau: Cho c a sổ Text 1 to ra đư c như sau: Microcontroller Tranning Center DKS_GROUP Microcontroller Tranning Center DKS_GROUP Microcontroller Tranning Center Tiếp theo bạn chọn File  Save As… ho c Ctrl+S Để nhớ file m c dù chưa c gì Như sau: DKS_GROUP Đư c cửa sổ sau: Microcontroller Tranning Center DKS_GROUP Microcontroller Tranning Center... Dieukhienled_IO .C như sau, để thêm file thư viện.Chọn Insert „#include ” DKS_GROUP Microcontroller Tranning Center C c bạn đã biết file đó là gì nếu c c bạn đã h c bài trư c kí theo yêu c u c a tôi Đư c như sau: DKS_GROUP Microcontroller Tranning Center Phần cuối c ng c a c ng vi c khởi tạo là c c bạn viết lời giải thích cho dự án c a mình Phần này rất c n thiết vì nó để người kh c hiểu mình...DKS_GROUP Microcontroller Tranning Center www.kmitl.ac.th www.ftdichip.com Bµi 2(TiÕp) PhÇn 2: Sử dụng Keil C Sau khi c i đặt mở ra c c bạn đư c hình sau: 1> Khởi tạo cho Project: DKS_GROUP Microcontroller Tranning Center Để tạo 1 project mới chọn Project  New project như sau: DKS_GROUP Đư c hình sau: Microcontroller Tranning Center DKS_GROUP Microcontroller Tranning Center Đánh tên và chuyển đến thư m c bạn... lần Nếu không c vòng while(1) thì led c a c c bạn chỉ sáng lên 1 lần rồi tắt vì hết chương trình rồi c n đâu Phần này nếu bạn nào mới h c điện tử thể nào c ng c c u hỏi th c m c cứ nhắn tin ho c gửi mail 3> Dịch chương trình: Soạn thảo song nhấn Ctrl +S để nhớ Nhớ xong c c bạn biên dịch chương trình bằng c ch ấn phím F7 ho c chọn Build target là biểu tượng ngay trên c a sổ workspace như trên hình:... 5VDC R2 40 470 VCC U1 D1 1 P1.0 + C3 LED RESET 9 10uF/25V R1 10K C2 33p 18 X2 12Mhz C1 33p 19 20 X1 VSS 8051 Biến Led1 đư c khai báo (gán cho) chấn P0_1 c a vi điều khiển bằng c u lệnh sbit Led1=P1^0; Giá trị bật bat đư c định nghĩa là 0 Khi c c bạn gán : Led1=bat; trong hàm main thì chân P1_0 c a AT8 9C5 1 c m c logic là 0V Theo sơ đồ nguyên lí: 5V  Trở 470  Led1  P1_0 (0 V) C chênh lệch áp  c ... Tranning Center C c bạn nhập tên vào text box file name Chú ý tên gì c ng đư c nhưng không đư c thiếu đuôi mở rộng C Nhấn Save Đư c cửa sổ sau: DKS_GROUP Microcontroller Tranning Center Trong ô bên trái màn hình, c a sổ project workspace, c c bạn mở rộng c i target 1 ra đư c như sau: DKS_GROUP Microcontroller Tranning Center Nhấp chuột phải vào thư m c Suorce Group1 đư c hình như trên Chọn Add files... “Source Group1” để add file vào project Đư c như sau: DKS_GROUP Microcontroller Tranning Center Chọn file C mà c c bạn vừa nhớ C a tôi là Dieukhienled_IO Nhấn Add 1 lần rồi ấn Close Nếu bạn ấn Add 2 lần nó sẽ thông báo là file đã add bạn chỉ vi c OK rồi nhấn Close Đư c như sau: DKS_GROUP Microcontroller Tranning Center Bây giờ nhìn trong Source Group 1 đã thấy file Dieukhienled_IO .C C c bạn nhấp chuột

Ngày đăng: 10/08/2016, 20:39

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan