PHẦN 3: LẬP TRÌNH VỚI CCS - ĐẶNG LÊ KHOA - TRƯỜNG ĐH KHTN - KHOA ĐIỆN TỬ VIỄN THÔNG doc - Pdf 12

TRƯỜNG ðẠI HỌC KHOA HỌC TỰ NHIÊNTRƯỜNG ðẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA ðIỆN TỬ KHOA ðIỆN TỬ VIỄN THÔNGVIỄN THÔNG
PHẦN 3: LẬP TRÌNH VỚI CCS
1
ðặngðặng LêLê KhoaKhoa
CHƯƠNG 1: CƠ BẢN VỀ CCS
• Ngôn ngữ C
• Cấu trúc cơ bản một chương trình
• Xuất nhập

Hàm delay

Hàm delay
• Lập trình với các vòng lặp và ñiều kiện
• Lập trình với các lệnh logic và số học
2
Ngôn
ngữ C
3
Ngôn ngữ C…
4
Ngôn ngữ C…
5
Ngôn ngữ C…
6
Cấu trúc cơ bản một chương
trình
#include <16F877.h>
#use delay(clock=16000000)
void main(void)
{

}
10
Hàm delay
• Cần có khai báo #use delay ( clock =xxxx)
VD : #use delay ( clock = 20000000 )
• Hàm delay không sử dụng bất kỳ timer nào

Có 3 hàm phục vụ :

Có 3 hàm phục vụ :
delay_cycles (count )
delay_us ( time )
delay_ms (time )
11
Hàm delay….
• 1: delay_cycles (count )
Count : hằng số từ 0 – 255 , là số chu kỳ lệnh .1 chu kỳ lệnh bằng 4
chu kỳ máy .
VD : delay_cycles ( 25 ) ; // với OSC = 20 Mhz , hàm này delay 5 us
• 2: delay_us ( time )
Time : là biến số thì = 0

255 , time là 1 hằng số thì = 0
-
65535 .
Time : là biến số thì = 0

255 , time là 1 hằng số thì = 0
-
65535 .

{
char i;
set_tris_c(0x00);
for (i=0;i<5;++i)
for (i=0;i<5;++i)
{
output_c(0xff);
delay_ms(500);
output_c(0x00);
delay_ms(500);
}
while(1)
{
}
}
14
Lập trình với ñiều kiện
VD 6: Viết chương trình nếu Port D =0 => xuất Port C
=0xff ngược lại xuất Port C=0x0f
#include <16F877.h>
#use delay (clock = 16000000)
void main(void)
{
char data;
set_tris_c(0x00);
set_tris_d(0xff);
while(1)
{
data=input_d();
if (data==0)

void main(void)
{
char data,i;
set_tris_c(0x00);
set_tris_d(0xff);
while(1)
{
data=
input_d
();
data=
input_d
();
if (data==0)
{
output_c(0xff);
delay_ms(500);
output_c(0x00);
delay_ms(500);
}
else
output_c(0xff);
}
}
17
CHƯƠNG 2: CHUYỂN ðỔI
TƯƠNG TỰ SANG SỐ (ADC)
• Nguyên tắc hoạt ñộng của ADC
• Cấu hình bộ ADC
• Ví dụ

• ADC_OFF : tắt hoạt ñộng ADC

ADC_CLOCK_INTERNAL :
thời
gian
lấy
mẫu
bằng

ADC_CLOCK_INTERNAL :
thời
gian
lấy
mẫu
bằng
xung clock IC ( mất 2-6 us )
• ADC_CLOCK_DIV_2 : thời gian lấy mẫu bằng
xung clock / 2 ( mất 0.4 us trên thạch anh 20MHz )
• ADC_CLOCK_DIV_8 : thời gian lấy mẫu bằng
xung clock / 8 ( 1.6 us )
• ADC_CLOCK_DIV_32 : thời gian lấy mẫu bằng
xung clock / 32 ( 6.4 us )
22
Setup_ADC_ports ( value )
Xác ñịnh chân lấy tín hiệu analog và ñiện thế chuẩn sử dụng .
Xem chi tiết từng loại PIC khác nhau. Vref : áp chuẩn , Vdd :
áp nguồn
Sau ñây là các giá trị thông dụng cho value:
• ALL_ANALOGS : dùng tất cả chân sau làm analog (Vref=Vdd)


23
Setup_ADC_ports ( value )….
VD :
setup_adc_ports (AN0_AN1_AN3) ;
// A0 , A1 , A3 nhận analog , áp nguồn +5V cấp cho IC sẽ là
ñiện áp chuẩn .
ñiện áp chuẩn .
24
Set_ADC_channel ( channel )
• Chọn chân ñể ñọc vào giá trị analog bằng
lệnh Read_ADC ( ).
• Nên delay 10 us sau hàm này rồi mới
dùng hàm read_ADC ( )
dùng hàm read_ADC ( )
• Giá trị channel tuỳ số chân chức năng
ADC mỗi chip. Thường có giá trị :
• 0-chân A0 , 1-chân A1, 2-chân A2, 3-chân
A3…
25


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status