Professional Documents
Culture Documents
Vi Dieu Khien Pic - Chuong 4
Vi Dieu Khien Pic - Chuong 4
KHOA CƠ KHÍ
BỘ MÔN CƠ ĐIỆN TỬ
KỸ THUẬT
VI ĐIỀU KHIỂN PIC
Firma convenzione
Politecnico di Milano e Veneranda Fabbrica
TS. Đặng
del Duomo Phước Vinh
di Milano
Aula Magna – Rettorato
Mercoledì 27 maggio 2015
Email: dangphuocvinh@gmail.com
Phone: 0908 217 415
2
Nội dung (30 tiết)
1. Giới thiệu chung
2. Cấu trúc phần cứng
3. Tập lệnh, chỉ thị tiền xử lý
4. Bộ định thời
5. Hoạt động ngắt
6. Bộ chuyển đổi ADC
7. Giao tiếp nối tiếp
TS. Đặng Phước Vinh Khoa Cơ khí
CHƯƠNG 4
BỘ ĐỊNH THỜI
Firma convenzione
Politecnico di Milano e Veneranda Fabbrica
del Duomo di Milano
Aula Magna – Rettorato
Mercoledì 27 maggio 2015
4
Đặc điểm của bộ định thời
Có 3 bộ định thời
▪ Timer 0: timer/counter 8 bit, có bộ chia trước
(prescaler)
TOSE (Timer0 Source Edge Select bit): bit lựa chọn cạnh
tích cực
Trong CCS
setup_timer_0(int8 mode)
set_timer0(int8 value)
Ví dụ: setup_timer_0(T0_INTERNAL|T0_DIV_64);
set_timer0(1);
TS. Đặng Phước Vinh Khoa Cơ khí
16
Ví dụ
Viết chương trình nhấp nháy LED với chu kỳ 1s dùng Timer0
✓Timer1 tăng lên 1 khi có cạnh lên của xung bên ngoài
✓Counter phải nhận 1 xung cạnh xuống trước khi có xung
đếm
✓Ngõ vào xung clock bên ngoài sẽ đồng bộ với xung clock
bên trong
✓Timer1 không tăng giá trị khi có xung đếm trong chế độ
SLEEP do mạch đồng bộ ngừng hoạt động → không thể
đánh thức VĐK ở chế độ SLEEP
✓Bộ đếm tiếp tục tăng bất đồng bộ với xung clock bên
trong
Trong CCS
setup_timer_1(int16 mode)
set_timer1(int16 value)
Ví dụ: setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
set_timer1(55536);
TS. Đặng Phước Vinh Khoa Cơ khí
BỘ ĐỊNH THỜI
TIMER 2
Firma convenzione
Politecnico di Milano e Veneranda Fabbrica
del Duomo di Milano
Aula Magna – Rettorato
Mercoledì 27 maggio 2015
33
Đặc điểm
✓ Là timer/counter 8 bit có prescaler và postscaler
✓ Có thể sử dụng như bộ tạo xung PWM của khối CCP
✓ Thanh ghi TMR2 có thể đọc và ghi và có thể xóa khi bị reset
✓ Tùy chọn bộ chia trước dựa vào bit T2CKPS1 & T2CKPS0
✓ Có 1 thanh ghi chu kỳ 8 bit PR2 → thanh ghi đỉnh.
▪ Là thanh ghi có thể đọc và ghi
▪ Khi reset → PR2 = FFh
✓ TMR2 tăng giá trị từ 00h đến giá trị bằng PR2 và reset về 00h ở
chu kỳ kế tiếp
✓ Ngõ ra TMR2 đi qua postscaler 4 bit để tạo ra yêu cầu ngắt
TS. Đặng Phước Vinh Khoa Cơ khí
34
Các thanh ghi liên quan
✓TMR2: chứa giá trị đếm của Timer2
U5 R6 Q4
13 33 NPN
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1 330
35
RB2
2 36
RA0/AN0 RB3/PGM
3 37 LED_7_DOAN
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40 R7
SW1
RA4/T0CKI/C1OUT RB7/PGD
7 10k
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25
RC6/TX/CK
26
RC7/RX/DT
19
LED_7_DOAN
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
TS. Đặng Phước Vinh RD5/PSP5
RD6/PSP6
29 Khoa Cơ khí
30
RD7/PSP7
45
CCP: Capture/Compare/PWM
✓ PIC16F877A có 2 modul CCP(Capture/Compare/PWM ) giống
hệt nhau về hoạt động
TS. Đặng
- Phước -Vinh CCPxX CCPxY CCPxM3 Khoa Cơ
CCPxM2 khí
CCPxM1 CCPxM0
47
Chế độ Capture
✓ Khi giá trị TMR1 đưa vào
CCPRx → cờ ngắt CCPxIF
được set
✓ Cờ ngắt: CCPxIF
✓ Có khả năng tạo ra hiện tượng đặc biệt (Special Event Trigger)
làm reset giá trị thanh ghi TMR1 và khởi động bộ ADC
✓ CCPxX, CCPxY: 2 bit thấp nhất chứa giá trị tính độ rộng xung
(duty cycle) của khối PWM
7 6 5 4 3 2 1 0 CCPxX CCPxY
−4 1
0.25 10 = Value 1
4 10 6
CCPR2L = 00011001;
CCP2CON = 00001100;
setup_timer_2(T2_DIV_BY_1,99,1);
setup_ccp2(CCP_PWM);
set_pwm2_duty(0);
set_pwm2_duty(value);
value
duty_cycle = value = 0.25 4 ( 99 + 1) = 100
4 ( PR2 + 1)