3.1 Tạo một Project mới sử dụng PIC Wizard Khởi động chơng trình làm việc PIC C Compiler.. Tab Communications liệt kê các giao tiếp nối tiếp mà một con Pic hỗ trợ, thờng là RS232 và I2C,
Trang 1Mục lục
Trang
Mục lục 1
Lời nói đầu 2
phần I : hớng dẫn cài đặt, sử dụng phần mềm CCS và winpic800 1 Hớng dẫn cài đặt 3
2 Tổng quan về CCS 3
3 Tạo một Project trong CCS 3
3.1 Tạo một Project mới sử dụng PIC Wizard 3
3.1.1 Tab General 4
3.1.2 Tab Communicatiions 6
3.1.3 Tab SPI and LCD 6
3.1.4 Tab Timer 7
3.1.5 Tab Analog 7
3.1.6 Tab Other 8
3.1.7 Tab Interrupts và Tab Driver 9
4 Hớng dẫn sử dụng WinPic800 10
phần I I : các bài thực hành cơ bản 16
Bài thực hành số 1: Nháy Led 16
Bài thực hành số 2: Điều khiển vào ra 21
Bài thực hành số 3: Điều khiển động cơ một chiều 24
Bài thực hành số 4: Điều khiển động cơ bớc 27
Bài thực hành số 5: Hiển thị Led 7 thanh 32
Bài thực hành số 6: Giải mã bàn phím 35
Bài thực hành số 7: Hiển thị LCD 40
Bài thực hành số 8: Lập trình điều khiển mô đun ADC-DAC 46
Bài thực hành số 9: Lập trình ngắt của bộ định thời 50
Bài thực hành số 10: Lập trình với ngắt ngoài 53
Bài thực hành số 11: Lập trình hiển thị matrix 8x8 55
Bài thực hành số 12: Lập trình giao tiếp I2C với DS1307 58
Bài thực hành số 13: Lập trình sử dụng bộ ADC trong Pic 16F877 65
Trang 2Phần I
Hớng dẫn cài đặt, sử dụng phần mền CCS và winpic
800
1 Hớng dẫn cài đặt Sử dụng Pcwh version 3.227.
Mở Forder cài đặt CCS nháy đúp vào file pcwhupd3.227.exe để tiến hành cài đặt Sau khi cài đặt xong thì copy 2 file Pcw.exe V3.227 Patch.exe và Ccsc.exe V3.227
Patch.exe vào trong C:/Program files/Picc.
CSS là trình biên dịch lập trình ngôn ngữ C cho VĐK Pic của hãng Microchip Chơng trình là sự tich hợp của của 3 trình biên dịch riêng biệt cho 3 dòng Pic khác nhau là:
+ PCB cho dòng Pic 12 bít opcodes
+ PCM cho dòng Pic 14 bít opcodes
+PCH cho dòng Pic 16 và 18 bít
Tất cả 3 trình biên dịch này đợc tích hợp lại trong một chơng trình bao gồm cả trình soạn thảo và biên dịch là CSS, phiên bản PCWH Compiler Ver 3.227
3 Tạo một Project trong CCS
Có nhiều cách để tạo một Project trong CSS, có thể dùng Project Wizard, Manual Creat, hay đơn giản là tạo một file mới và thêm vào đó các khai báo ban đầu
Dới đây sẽ trình bày cách tạo một Project mới theo cả 3 phơng pháp Ta cần chú ýkhi tạo một Project mới thì ta nên tạo một th mục mới có tên liên quan đến dự án địnhlàm, rồi lu tất cả các file liên quan vao trong th mục đó Khi biên dịch, CSS sẽ tạo ra rất nhiều file liên quan khác nhau các file này sẽ tự động lu trong th mục chung đó
Đây cũng là quy tắc chung khi làm việc với bất kỳ phần mềm lập trình nào
3.1 Tạo một Project mới sử dụng PIC Wizard
Khởi động chơng trình làm việc PIC C Compiler Từ giao diện chơng trình chọn
Project →New→PIC Wizard Hình 2.1.1
Sau khi chọn một cửa sổ mới hiện ra yêu cầu nhập tên file cần tạo, Tạo một th mục mới và lu file này vào trong th mục đó
Sau khi Save một cửa sổ New Project hiện ra Hình 2.1.2 Trong cửa sổ này bao
gồm rất nhiều Tab, mỗi tab mô tả một vài tính năng nhất định của Pic Ta sẽ chọn tính năng trong các tab tơng ứng
Trang 3+ Debice: Liệt kê danh sách các loại PIC 12F, 16F, 18F, ở đây ta dùng Pic 16F877A.
+ Oscilator Frenquency: Tần số thạch anh sử dụng
+ Fuses: Thiết lập các bít Config nh: Chế độ dao đông (HS, RC, INTERNAL), chế độ bảo vệ Code, Brownout detected
+ Chọn kiểu con trỏ Ram 8 bít hay 16 bít
Trang 4H×nh 2.1.3
H×nh 2.1.4
3.1.2 Tab Communicatiions
Trang 5Tab Communications liệt kê các giao tiếp nối tiếp mà một con Pic hỗ trợ, thờng là RS232 và I2C, cùng với các lựa chọn để thiết lập các thông số hoạt động cho từng loạigiao tiếp.
+ Giao tiếp RS232: Mỗi VĐK Pic hỗ trợ một cổng truyền thông RS232 chuẩn Tab này cho phép ta lựa chọn các chân Rx, Tx, tốc độ baud, Data bít, Bít Parity…
+ Giao tiếp I2C: Để sử dụng I2C ta chọn vào nút use I2C, khi đó ta có các lực chọn:Chân SDA, SCL, tốc độ truyền (Fast hay Slow), chế độ Master hay Slave, địa chỉ cho Slave Hình 2.1.4.
3.1.3 Tab SPI and LCD
Tab này liệt kê cho chúng ta các lựa chọn đối với giao tiếp nối tiếp SPI, chuẩn giao tiếp tốc độ cao mà Pic hỗ trợ về cấu hình cứng Chú ý khi ta dùng I2C thì không thể dùng đợc SPI và ngợc lại Để có thể sử dụng cả hai giao tiếp này cùng một lúc thì buộc một trong hai giao tiếp phải đợc lập trình bằng phần mềm (giống nh dùng I2C cho 89C51) Hình 2.1.5
Phần cấu hình cho LCD chỉ dành cho các đời Pic 18F và 30F
Hình 2.1.5
3.1.4 Tab Timer
Tab này liệt kê các bộ đếm, bộ định thời mà các con Pic dòng Midrange có: timer0,timer1, timer2, WDT… Hình 2.1.6
Trong lựa chọn cấu hình cho các bộ đếm, bộ định thời có chọn nguồn xung đồng
hồ (trong hay ngoài), khoảng thời gian xảy ra tràn…
Trang 6Hình 2.1.6
3.1.5 Tab Analog
Tab này cho phép lựa chọn bộ chuyển đổi tơng tự/số (ADC) của Pic Tuỳ vào từng
IC cụ thể mà có các lựa chọn khác nhau.,bao gồm:
+ Lựa chọn cổng vào tơng tự
+ Lựa chọn chân điện áp lấy mẫu (Vref)
+ Chọn độ phân giải: 8 bít (0 ~ 55) hay 10 bít(0 ~ 1023)
+ Nguồn xung đồng hồ cho bộ ADC (trong hay ngoài), từ đó mà ta có đợc tốc
độ lấy mẫu, thờng gọi là interal 2 hay 6 us.
+ Khi không sử dụng bộ ADC ta chọn none.
Hình 2.1.7.
Trang 7+ Compare (So sánh): Ta có các lạ chọn thực hiện lệnh xảy ra bằng nhau giữa 2
đối tợng so sánh là giá trị của Timer1 với giá trị lu trong thanh ghi để so sánh Bao gồm:
• Thực hiện ngắt và thiết lập mức 0
• Thiết lập ngắt và thiết lập mức 1
• Thực hiện ngắt nhng không thay đổi trạng thái của chân Pic
• Đa Timer1 về 0 nhng không thay đổi trạng thái chân Pic
+ PWM (Điều chế độ rộng xung).
Lựa chọn về tần số xung ra và duty cycle Ta có thể lựa chọn sẵn hay tự chọn tần số, tất nhiên tần số ra phải nằm trong khoảng cho phép
+ Comparator (So sánh điện áp)
Lựa chọn mức điện áp so sánh Vref, có rất nhiều mức điện áp để ta lựa chọn, ta cũng có thể lựa chọn cho đầu vào của bọ so sánh
Trang 8Hình 2.1.8
3.1.7 Tab Interrupts và Tab Driver
Tab Interrupts cho phép ta lựa chọn nguồn ngắt mà ta muốn sử dụng Tuỳ vào từng loại Pic mà số lợng nguồn ngắt khác nhau, bao gồm: Ngắt ngoài 0 (INT0), ngắt
RS232, ngắt timer, ngắt I2C, SPI, ngắt onchange PORTB…
Tab Drive đợc dùng để lựa chọn những ngoại vi mà trình dịch đã hỗ trợ sẵn các hàm giao tiếp Đây là những ngoại vi mà ta sẽ kết nối với Pic, trong các IC mà CCS
hỗ trợ nh các loại EEPROM 2404, 2416, 2432, 9346, 9355… và một số IC Ram nh PCF 8570, IC thời gian thực DS 1302, Keypad 3x4, LCD, ADC…
Hình 2.1.9: Tab Interrupts
Trang 9Hình 2.1.10: Tab Drive
Sau khi thực hiện xong ta nhấn OK để hoàn tất, một file.c đợc tạo ra File này chứatất cả các thiết lập mà ta đã lựa chọn
4 Hớng dẫn sử dụng WinPic 800.
4.1 Cài đặt và sử dụng GTP USB Programmer.
GTP USB Programmer dùng để nạp chơng trình sau khi đã dịch ra file hex xuống Pic, sử dụng kết nối USB 2.0 và phần mềm WinPic800 GTP USB có thể nạp cho hầu hết các chíp Pic bao gồm các họ 8, 14, 18, 24 và 40 chân, ngoài ra nó còn có thể nạp cho cả dsPic30
4.1.1 Cài đặt.
Kết nối mạch nạp với máy tính thông qua cổng USB máy sẽ có thông báo sau:
Nhấn Next
Trang 10Tìm đờng dẫn trong file cài đặt trên đĩa CD.
Nhấn Next
Chờ cho Window tìm kiếm và cài đặt
Trang 11Xã nhận cài đặt bằng continue Anyway
Chọn Finish để kết thúc cài đặt.
Trang 12Để kiểm tra lại quá trình cài đặt ta làm nh sau: Quay trở về Desktop nhấn phải chuột vào biểu tợng My Computer chọn Magane, chọn Device Magane
Trang 13Trong lÇn ch¹y ®Çu tiªn th× thêng WinPic800 kh«ng hiÓn thÞ tiÕng Anh v× vËy chóng ta cÇn thiÕt lËp l¹i Trªn giao diÖn WinPic800 chän Ideoma/English.
§Ó sö dông WinPic víi GTP USB Programmer th× ta cÇn ph¶i thiÕt lËp mét vµi
th«ng sè trong Menu Chän Setting/Hardware, Setting/Hardware b¶ng hiÖn ra nh
sau:
Trang 14Trở lại giao diện chính của WinPic800, chọn Deivce/Detect Pi, nếu phần mềm báo
đúng Pic thì ta có thể tiến hành nạp chơng trình
Mở một file hex (File/Open) rồi chọn Device/Program all để tiến hành nạp
Thông báo sau kết thúc quá trình nạp đã thành công
Trang 15Phần II Các bài thực hành cơ bản
Bài thực hành số 1
Nháy Led
I Mục đích
Học xong bài này học sinh cần nắm đợc các nội dung sau:
- Hiểu đợc cách đặt cấu hình vào ra cho các PORT
- Hiểu cách kiểm tra tín hiệu vào tại một chân
- Hiểu đợc cấu trúc và hoạt động của lệnh “if”
RE0/RD/AN5 8RA5/AN4/SS/C2OUT 7
RA1/AN1 3RA2/AN2/VREF-/CVREFRA3/AN3/VREF+ 4
5 RA4/TOCKI/C1OUT 6RE2/CS/AN7 10
RD6/PSP6 29
RD5/PSP5 28
RD4/PSP4 27
RD3/PSP3 22
RD2/PSP2 21
RD1/PSP1 20
RD0/PSP0 19
RC7/RX/DT 26
RC6/TX/CK 25
RC5/SDO 24
RC4/SDI/SDA 23
RC3/SCK/SCL 18
RC2/CCP1 17
RC1/T1OSI/CCP2 16
RC0/T1OSO/T1CKI 15
RB7/PGD 40
RB6/PGC 39
RB5 38 RB4 37 RB3/PGM 36
RB2 35 RB1 34 RB0/INT 33
R3 10K
+5v
RERET SW
X2 12000000
Trang 16- Portd là port xuất dữ liệu.
- Sau khi hoàn tất các lựa chọn thì ta đợc kết quả nh sau:
include "C:\Documents and
- Ta phải tiến hành chỉnh sửa lại các thông số nh file dới đây: Chú ý các file đợc quản
lý theo Project nên ta chi cần khai báo #include <16f877.h>
#include <16f877.h> //Khai bao thu vien 16F877
#FUSES NOWDT, HS, NOPUT, NOLVP, NOWRT //Khai bao cac bit config
#use delay(clock=12000000) //Khai bao thach anh dung
//////////////////////////////////////////////////////////////////////////
void main() {
Trang 17#define LED PIN_D0 // Định nghĩa chân PD0 cho LED
- Nhiệm vụ của ngời lập trình là thêm các đoạn code vào vòng while();
#include <16f877.h> //Khai bao thu vien 16F877
#FUSES NOWDT, HS, NOPUT, NOLVP, NOWRT //Khai bao cac bit config
#use delay(clock=12000000) //Khai báo tần số thạch anh.
void main() {
#define LED PIN_D0 // Định nghĩa chân PD0
output_high (LED); //Bật LED
delay_ms (500); //Gọi hàm thời gian
output_low (LED); //Tắt LED
delay_ms (500); } //Gọi hàm thời gian.
5 Biên dịch chơng trình nguồn sang File có đuôi *.HEX
- Trên thanh công cụ
Click vào đây để dịch ra file .hex
- Nếu quá trình dịch thành công thì window sẽ có thông báo nh sau
6 Nạp chơng trình cho vi điều khiển
- Lắp vi điều khiển Pic 16F877 vào GTP USB Programmer
- Khởi động WinPic800
- Thiết lập các thông số cho phần cứng (Nh phần hớng dẫn cho WinPic800)
- Mở file nhay_led.hex trong th mục nhay_led
Trang 18- Chọn Device/Programl Nếu quá trình nạp thành công thì window sẽ có thông báo
sau:
7 Hoạt động thử.
- Chuyển chíp sang main chính và cho chạy thử
- Theo dõi sự hoạt động của mạch
IV Báo cáo thí nghiệm:
V Câu hỏi kiểm tra
1 Vẽ lu đồ thuật toán của chơng trình và giải thích
Trang 19Học xong bài này học sinh cần nắm đợc các nội dung sau:
- Hiểu đợc cách đặt cấu hình vào ra cho các PORT
- Hiểu cách kiểm tra tín hiệu vào tại một chân
- Hiểu đợc cấu trúc và hoạt động của lệnh “if”
II Tóm tắt lí thuyết
- Trong các chơng trình đơn giản thì việc xử lý các tín hiệu trong vòng while() là
đơn giản Đối với các chơng trình lớn thì viêc xử lý tín hiệu trong vòng while() là
không còn phù hợp nữa Việc viết chơng trình sử dụng các chơng trình con sẽ làmcho chơng trình trở nên ngắn gọn hơn, tiết kiệm đợc EFFROM cho chíp Từ bàinày trở đi chúng ta sẽ dùng nhiều đến các chơng trình con và các th viện
RE0/RD/AN5 8RA5/AN4/SS/C2OUT 7
RA1/AN1 3RA2/AN2/VREF-/CVREF 4RA3/AN3/VREF+ 5RA4/TOCKI/C1OUT 6RE2/CS/AN7 10
RD6/PSP6 29
RD5/PSP5 28
RD4/PSP4 27
RD3/PSP3 22
RD2/PSP2 21
RD1/PSP1 20
RD0/PSP0 19
RC7/RX/DT 26
RC6/TX/CK 25
RC5/SDO 24
RC4/SDI/SDA 23
RC3/SCK/SCL 18
RC2/CCP1 17
RC1/T1OSI/CCP2 16
RC0/T1OSO/T1CKI 15
RB7/PGD 40
RB6/PGC 39
RB5 38 RB4 37 RB3/PGM 36
RB2 35 RB1 34 RB0/INT 33
R3 10K
+5v
RERET SW
X2 12000000
C13
104 C16104
DS1 LED0
R2 330
PB1 PB PB0 PB
2 Tạo một dự án mới và đặt tên cho dự án.
- Soạn thảo chơng trình theo nội dung sau:
#include <16f877.h>
#include <def_877a.h> //Khai báo th viện 16f877.h
#FUSES NOWDT, HS, NOPUT, NOLVP, NOWRT //Khai báo các bít config
#use delay(clock=12000000) //Khai báo tần số thạch anh dùng.
Trang 20void set(){ // Chơng trình con bật.
}} // End programmer
3 Biên dịch chơng trình nguồn sang File hex
4 Hoạt động thử.
- Tắt công tắc nguồn
- Lắp ghép mô đun ghép nối bàn phím và mô đun hiển thị LED với main chính
- Chuyển vi điều khiển Pic lắp sang main chính
- Bật công tắc nguồn
- Nhấn nút Start nối với Pin_B0
- Nhấn nút Stop nối với Pin_B1
- Theo dõi sự hoạt động của Led
IV Báo cáo thí nghiệm:
V Câu hỏi kiểm tra
1 Giải thích hoạt động của đoạn code sau: So sánh sự hoạt động của nó với
ch-ơng trình vừa soạn thảo ở trên
#include <def_877a.h> //Khai báo th viện 16f877.h
#use delay(clock=12000000) //Khai báo tần số thạch anh dùng.
Trang 21I Mục đích
Học xong bài này học sinh cần nắm đợc các nội dung sau:
- Hiểu đợc cách điều khiển động cơ trên mô đun động cơ DC
- Hiểu cách điều khiển động cơ bằng tín hiệu PWM (độ rộng xung)
- Hiểu đợc cấu trúc và cách hoạt động của lệnh “SWITCH”
- Hiểu đợc cách dùng các lệnh toán học trong chơng trình
II Tóm tắt lí thuyết
- Sơ đồ nguyên lý Hình 2-1
Mô tả: Các tín hiệu điều khiển đợc cách li với mạch động lực qua các IC quangIC1, IC2 Động cơ đợc điều khiển qua bộ Tranzitor mắc Darlington dùng nguồn12VDC RL1 dùng để đảo chiều động cơ đợc điều khiển bởi Q3 Khi kết nối vớiMain chính thì J1 nối với PORTD sao cho PD0 qua IC1, PD1 qua IC2
+88.8
RL1
0V +12V
Q1 Q2
D1
Hình 2-1
III Các bớc tiến hành
5 Khởi động phần mềm lập trình CCS.
6 Tạo một dự án mới và đặt tên cho dự án dkdcdc.
- Soạn thảo chơng trình theo nội dung sau:
Trang 22- ấn nút “Lefl” động cơ chạy thuận
- ấn nút “Right” động cơ chạy ngợc
- ấn nút “Fast” động cơ chạy nhanh
- ấn nút “Slow” động cơ chạy chậm
- ấn nút “Stop” động cơ dừng
- Theo dõi sự hoạt động của động cơ
Trang 23IV Báo cáo thí nghiệm:
V Câu hỏi kiểm tra
1 Giải thích hoạt động của chơng trình Viết lu đồ thuật toán của chơng trình
Trang 24Học xong bài này học sinh cần nắm đợc các nội dung sau:
- Hiểu đợc cấu tạo, nguyên lí hoạt động của động cơ bớc
- Hiểu đợc cách khai báo và sử dụng các biến, cách khai báo và cách gọi các
ch-ơng trình con
- Hiểu đợc cấu trúc và cách dùng lệnh “Switch”
- Hiểu đợc phơng pháp tạo xung điều khiển động cơ bớc bằng phần mềm
- Xây dựng đợc chơng trình đảo chiều quay và thay đổi tốc độ động cơ bớc
II Tóm tắt lí thuyết
Hiện nay trong một số hệ thống điều khiển tự động có sử dụng một loại động cơ
đặc biệt chạy bằng xung điện Khác với động cơ thông thờng là động cơ này khôngquay liên tục mà nó chỉ dịch chuyển từng “bớc” vì vậy còn gọi là động cơ bớc Ưu
điểm nổi bật của nó là có thể điều khiển, khống chế để trục đông cơ bớc quay mộtgóc ∝ nào đó
Sơ lợc cấu tạo:
Động cơ bớc rất có cấu tạo giống
động cơ điện một chiều nhng có điểm
Nguyên lí làm việc của động cơ bớc:
Xét một động cơ bớc 2 pha đơn giản stato có 2 cực, rô to kiểu nam châm vĩnh cửugồm 6 cực đặt xen kẽ lẫn nhau Góc hợp bởi 2 cực từ kề nhau trên rô to là 600 Dòng
điện 2 pha đợc tạo ra bằng cách đóng mở không đồng thời các công tắc K1 và K2
Xung dòng điện chạy trong 2 cuộn dây (2 pha) đợc minh hoạ trên hình 4-2
Xét tại thời điểm t1, khoá K1 đóng , K2 mở; dòng điện pha A đặt giá trị cực đại còndòng điện pha B bằng không Từ trờng stato là từ trờng của pha A (có phơng thẳng
đứng Từ trờng này sẽ hút các cực trái dấu về vị trí trùng phơng với nó Hình 4-3a
Trang 25Xét tại thời điểm t2, khoá K1
mở, K2 đóng; dòng điện pha A
đặt giá trị không còn dòng điện
pha B đạt giá trị cực đại Từ
tr-ờng stato là từ trtr-ờng của pha B
S N U-
Xét ở các thời điểm trên các xung điện tiếp theo ta cũng có kết quả tơng tự
Nếu gọi số cặp cực trên stato là a, số cực trên rô to là n thì để quay hết một vòngrô to cần dịch chuyển k bớc Với k = n x a (bớc) - k còn đợc gọi là độ phân giải của
Trang 26- Động cơ này hoạt động ổn định, sau mỗi bớc động cơ tự “hãm” và dừng lại để dịchchuyển bớc tiếp theo vì vậy điểm dừng có độ chính xác cao, thích hợp với hệ thống tự
động điều khiển
- Tính năng u điểm nh động cơ một chiều nhng lại không có chổi than, không phátsinh tia lửa điện
Tuy nhiên, nguồn cung cấp cho động cơ bớc là nguồn xung, không sẵn có ở
lới điện công nghiệp nên cần phải trang bị thiết bị tạo nguồn xung
1101
1011
0111
1110
1101
1011
0111
1110Biểu diễn số HEX 07H 0BH 0DH 0EH 07H 0BH 0DH 0EH 07H
III Các bớc tiến hành
1 Khởi động phần mềm lập trình CCS.
- Tạo file dongcobuoc.c và lu trong th mục dongcobuoc.
2 Soạn thảo chơng trình nguồn.
- Soạn thảo chơng trình theo nội dung sau:
RB0 RB1 RB2 RB3 RB4
PorC
Fast
Trang 27- ấn nút “Lefl” động cơ chạy thuận
- ấn nút “Right” động cơ chạy ngợc
- ấn nút “Fast” động cơ chạy nhanh
- ấn nút “Slow” động cơ chạy chậm
- ấn nút “Stop” động cơ dừng
- Theo dõi sự hoạt động của động cơ
IV Báo cáo thí nghiệm:
Trang 28V Câu hỏi kiểm tra
1 Vẽ lu đồ và giải thích hoạt động của chơng trình điều khiển động cơ bớc
2 Viết lại chơng trình để khởi động động cơ bớc, sau một thời gian động cơ tự
động tăng tốc
3 Viết chơng trình điều khiển động cơ bớc quay 10 vòng thì dừng
Trang 29Học xong bài này học sinh cần nắm đợc cá nội dung sau:
- Hiểu đợc cấu tạo và phần cứng và cách hiển thị các Led 7 thanh
- Hiểu đợc cách định nghĩa các chân out: VD “#define L0 PORTC.5”
- Hiểu đợc cách khai báo và gọi các giá trị trong một mảng
- Hiểu và sử dụng các lệnh toán học nh chia lấy phần nguyên, phần d…
- Hiểu đợc cách đổi kiểu bằng phơng pháp gán trong lập trình C
- Xây dựng đợc chơng trình hiển thị số đếm bằng LED 7 thanh
1 3 5 7
PORTD
1 3 5 7
là loại PNP, vì vậy mức tín hiệu đầu ra của PortD phải là mức 0 thì LED mới sáng
III Các bớc tiến hành
1 Khởi động phần mềm lập trình CCS
- Tạo file quetled7thanh.c lu trong th mục quetled7thanh.
2 Soạn thảo chơng trình nguồn
- Soạn thảo chơng trình theo nội dung sau: