Total slides: 109
Light Emitting Diodes
Seven Segment LED
LCD Interfacing
Stepper Motor Interfacing
Digital to Analog Converter
ADC Interfacing
Keyboard Interfacing
Micro PLC Logo! Comunicación con teléfono Androidxendika2
Práctica en la que se hace uso de las comunicaciones Ethernet que incorpora el Logo! de Siemens a partir de la versión OBA7. Se establece una comunicación con la Logo! App, en la práctica para un sistema Android, pero también esta disponible en el SO IOS
"Tây Tiến" là bài thơ viết về binh đoàn Tây Tiến nơi nhà thơ đã từng sống và chiến đấu. Những người lính trong binh đoàn phần đông là thanh niên Hà Nội, chiến đấu trong hoàn cảnh gian khổ, vô cùng thiếu thốn về mọi mặt nhưng vẫn phơi phới tinh thần lãng mạn anh hùng. Ở họ có vẻ đẹp tinh nghịch hào hoa của chàng trai đất Hà thành nhưng cũng thật kiêu hùng, can đảm trong cuộc chiến đấu. Miêu tả về họ, Quang Dũng sử dụng bút pháp lãng mạn và cảm hứng ngợi ca khiến cho dù trải qua đau thương, gian khổ thì người lính vẫn hiện lên mang vẻ đẹp thật đặc biệt: bi tráng mà không hề bi lụy.
Mở bài Vẻ đẹp bi tráng của hình tượng người lính trong bài thơ Tây Tiến 2
“Tây Tiến” là một bài thơ tiêu biểu của Quang Dũng, là thành tựu của thơ ca kháng chiến chống Pháp, là một trong những bài thơ hay nhất viết về người lính. Trần Lê Văn đã từng có những nhân xét như: “Trước “Tây Tiến”, Quang Dũng đã có những khúc dạo đàn khá hay nhưng thật sự chỉ đến “Tây Tiến” Quang Dũng mới thực sự trình làng một phong cách thơ, một diện mạo thơ”. Đó là một phong cách hồn hậu, hào hoa. Không những thế qua bài thơ “Tây Tiến” ta thấy được vẻ đẹp bi tráng của những anh hùng Tây Tiến.
ADVERTISING
Mở bài Vẻ đẹp bi tráng của hình tượng người lính trong bài thơ Tây Tiến 3
Trong thời kì đấu tranh chống giặc cứu nước, người lính trở thành một hình tượng trung tâm được nhiều nghệ sĩ đi vào khai thác, thể hiện. “Tây Tiến” của Quang Dũng cũng là một trong số những sáng tác như thế. Tác phẩm đã thực sự thành công khi đi vào khắc họa hình ảnh người lính Tây Tiến trong thời kì kháng chiến chống Pháp trong đó có vẻ đẹp bi tráng là vẻ đẹp nổi bật để lại trong người đọc nhiều xúc cảm.
Mở bài Vẻ đẹp bi tráng của hình tượng người lính trong bài thơ Tây Tiến 4
Bài thơ “Tây Tiến” là một trong những tác phẩm tiêu biểu của nhà thơ Quang Dũng. Đoàn quân Tây Tiến đa phần là những thanh niên Hà Nội, phải chiến đấu trong hoàn cảnh gian khổ, thiếu thốn về mọi thứ nhưng vẫn yêu đời. Ở những người lính Tây Tiến họ mang một vẻ đẹp tinh nghịch, hào hoa nhưng cũng thật anh hùng, kiên cường cho cuộc chiến. Qua ngòi bút của Quang Dũng những người lính ấy hiện lên mang vẻ đẹp bi tráng nhưng không hề bi lụy.
Mở bài Vẻ đẹp bi tráng của hình tượng người lính trong bài thơ Tây Tiến 5
Trong vô vàn hối hả và thúc giục, người ta khao khát tìm đến một bến bờ bình yên. Điều tưởng chừng đơn giản mà bạn chẳng thể tìm đến trong cuộc sống hiện đại xô bồ. Và văn chương như một điều diệu kì mà cuộc sống đem đến và cho ta khoảng lặng của tâm hồn. Từng câu chữ làm con tim rung động, làm tâm hồn ta rộng mở. Chẳng phải những dữ dội sôi nổi, bình yên và dịu nhẹ như vậy mà vần thơ của Quang Dũng đã dần len lỏi trong tâm trí ta tự bao giờ. Khúc tình thơ “Tây Tiến” anh hùng với người lính Tây Tiến mang vẻ đẹp bi tráng để lại trong ta bao kỉ niệm. afe "Tây Tiến" là bài thơ viết về binh đoàn Tây Tiến nơi nhà thơ đã từng sống và cdsd
Total slides: 109
Light Emitting Diodes
Seven Segment LED
LCD Interfacing
Stepper Motor Interfacing
Digital to Analog Converter
ADC Interfacing
Keyboard Interfacing
Micro PLC Logo! Comunicación con teléfono Androidxendika2
Práctica en la que se hace uso de las comunicaciones Ethernet que incorpora el Logo! de Siemens a partir de la versión OBA7. Se establece una comunicación con la Logo! App, en la práctica para un sistema Android, pero también esta disponible en el SO IOS
"Tây Tiến" là bài thơ viết về binh đoàn Tây Tiến nơi nhà thơ đã từng sống và chiến đấu. Những người lính trong binh đoàn phần đông là thanh niên Hà Nội, chiến đấu trong hoàn cảnh gian khổ, vô cùng thiếu thốn về mọi mặt nhưng vẫn phơi phới tinh thần lãng mạn anh hùng. Ở họ có vẻ đẹp tinh nghịch hào hoa của chàng trai đất Hà thành nhưng cũng thật kiêu hùng, can đảm trong cuộc chiến đấu. Miêu tả về họ, Quang Dũng sử dụng bút pháp lãng mạn và cảm hứng ngợi ca khiến cho dù trải qua đau thương, gian khổ thì người lính vẫn hiện lên mang vẻ đẹp thật đặc biệt: bi tráng mà không hề bi lụy.
Mở bài Vẻ đẹp bi tráng của hình tượng người lính trong bài thơ Tây Tiến 2
“Tây Tiến” là một bài thơ tiêu biểu của Quang Dũng, là thành tựu của thơ ca kháng chiến chống Pháp, là một trong những bài thơ hay nhất viết về người lính. Trần Lê Văn đã từng có những nhân xét như: “Trước “Tây Tiến”, Quang Dũng đã có những khúc dạo đàn khá hay nhưng thật sự chỉ đến “Tây Tiến” Quang Dũng mới thực sự trình làng một phong cách thơ, một diện mạo thơ”. Đó là một phong cách hồn hậu, hào hoa. Không những thế qua bài thơ “Tây Tiến” ta thấy được vẻ đẹp bi tráng của những anh hùng Tây Tiến.
ADVERTISING
Mở bài Vẻ đẹp bi tráng của hình tượng người lính trong bài thơ Tây Tiến 3
Trong thời kì đấu tranh chống giặc cứu nước, người lính trở thành một hình tượng trung tâm được nhiều nghệ sĩ đi vào khai thác, thể hiện. “Tây Tiến” của Quang Dũng cũng là một trong số những sáng tác như thế. Tác phẩm đã thực sự thành công khi đi vào khắc họa hình ảnh người lính Tây Tiến trong thời kì kháng chiến chống Pháp trong đó có vẻ đẹp bi tráng là vẻ đẹp nổi bật để lại trong người đọc nhiều xúc cảm.
Mở bài Vẻ đẹp bi tráng của hình tượng người lính trong bài thơ Tây Tiến 4
Bài thơ “Tây Tiến” là một trong những tác phẩm tiêu biểu của nhà thơ Quang Dũng. Đoàn quân Tây Tiến đa phần là những thanh niên Hà Nội, phải chiến đấu trong hoàn cảnh gian khổ, thiếu thốn về mọi thứ nhưng vẫn yêu đời. Ở những người lính Tây Tiến họ mang một vẻ đẹp tinh nghịch, hào hoa nhưng cũng thật anh hùng, kiên cường cho cuộc chiến. Qua ngòi bút của Quang Dũng những người lính ấy hiện lên mang vẻ đẹp bi tráng nhưng không hề bi lụy.
Mở bài Vẻ đẹp bi tráng của hình tượng người lính trong bài thơ Tây Tiến 5
Trong vô vàn hối hả và thúc giục, người ta khao khát tìm đến một bến bờ bình yên. Điều tưởng chừng đơn giản mà bạn chẳng thể tìm đến trong cuộc sống hiện đại xô bồ. Và văn chương như một điều diệu kì mà cuộc sống đem đến và cho ta khoảng lặng của tâm hồn. Từng câu chữ làm con tim rung động, làm tâm hồn ta rộng mở. Chẳng phải những dữ dội sôi nổi, bình yên và dịu nhẹ như vậy mà vần thơ của Quang Dũng đã dần len lỏi trong tâm trí ta tự bao giờ. Khúc tình thơ “Tây Tiến” anh hùng với người lính Tây Tiến mang vẻ đẹp bi tráng để lại trong ta bao kỉ niệm. afe "Tây Tiến" là bài thơ viết về binh đoàn Tây Tiến nơi nhà thơ đã từng sống và cdsd
2. Kiểm tra chương ngắt
1. Nêu tên các thanh ghi liên quan đến ngắt, chức
năng các bit trong thanh ghi INTCON?
2. Nêu các chân ngắt ngoài và các chân ngắt PORTB
của PIC16F887, có gì khác với PIC 16F877A?
3. Vẽ sơ đồ mạch nguyên lý, vẽ lưu đồ giải thuật và
viết chương trình điều khiển 8 LED nối với PORTD
theo yêu cầu: Khi có ngắt ngoài PORTD = 0xF0;
Biết ban đầu 8 LED tắt; Fosc = 4MHz
3. Nội dung chương 5
1. Timer
2. Đặc điểm, Sơ đồ khối của Timer 0
3. Các bước để định thời gian Timer 0
4. Các bước để đếm sự kiện Counter 0
5. Bài tập Timer 0
6. Đặc điểm, Sơ đồ khối của Timer 1
7. Các bước để định thời gian Timer 1
8. Các bước để đếm sự kiện Counter 1
9. Bài tập Timer 1
10. Đặc điểm, Sơ đồ khối của Timer 2
11. Các bước để định thời gian Timer 2
12. Bài tập Timer 2
4. Timer được sử dụng cho nhiều chức
năng:
Định thì để tạo sự kiện
Đếm sự kiện
Tạo dạng sóng v..v
PIC16F877 có 3 timers
– Timer0
– Timer1
– Timer2
Timers
5. So sánh các Timer
TIMER2
TIMER1
TIMER0
8-bits (TMR2)
16-bits
(TMR1H:TMR1L)
8-bits (TMR0)
Kích thước
thanh ghi
Fosc/4
Fosc/4
Fosc/4
Nguồn CLOCK
(bên trong)
None
T1CKI pin or
Timer 1 oscillator
(T1OSC)
T0CKI pin
Nguồn CLOCK
(bên ngoài)
Prescaler
(1:1,1:4,1:8)
Postscaler
(1:11:16)
Prescaler 3-bits
(÷1,÷2,÷4,÷8)
Prescaler 8-bits
(1:21:256)
CLOCK SCALING
AVAILABLE
(Resolution)
TMR2 matches
PR2
(TMR2IF in PIR2)
On overflow
FFFFh0000h
(TMR1IF in PIR1)
On overflow
FFh00h
(TMR0IF in INTCON)
Sự kiện ngắt và
cờ ngắt
NO
YES
NO
Đánh thức PIC từ
SLEEP
6. Đặc điểm của Timer 0
Là Timer/Counter 8 bit
Có thể đọc và ghi
Có bộ chia trước 8 bit có thể lập trình bằng
phần mềm
Có thể lựa chọn nguồn xung clock bên
trong hoặc bên ngoài
Cho phép lựa chọn tác động cạnh cho xung
clock bên ngoài
Xảy ra hiện tượng ngắt khi tràn từ
FFh00h
8. scaled clock TMR0
T0CKI
pin
Fosc/4
prescaler
Watchdog Timer
synchronize
8
DATA BUS
•Timer 0 có thể đọc/ ghi
TMR0IF
INTCON register
• Xung clock bên ngoài (TOCKI) được sử dụng, nó sẽ
được đồng bộ hóa với xung clock bên trong
•Cờ ngắt Timer 0 sẽ được set khi có hiện tượng tràn TMR0
(FF00)
Sơ đồ khối Timer 0
10. Các bước để định thời gian Timer 0
B1: Tính toán các giá trị cần đưa vào code:
tdelay: thời gian cần định thời (us)
fOSC: tần số dao động thạch anh
Pre:hệ số chia tần trước prescaler(Pre=1,2,4...,256
[TMR0]: giá trị cần ghi vào thanh ghi TMR0
B2: Ghi vào TMR0 giá trị đã tính toán
B3: Xóa cờ báo tràn( cờ ngắt) TMR0IF
B4: Chọn chế độ hoạt động của Timer 0
• (chọn chế độ Timer, gán prescaler..)
B5: Xác định thời điểm Timer 0 tràn bằng cách:
• Kiểm tra cờ TMR0IF( nếu dùng thăm dò)
• Xử lý ISR của Timer 0 (nếu dùng ngắt)
Xác định được:
TMR0 =
TMR0IF =
PSA =
PS2 =
PS1 =
PS0 =
T0SE =
T0CS =
Nếu dùng ngắt:
GIE =
TMR0IE =
13. Các bước để đếm sự kiện Counter 0
B1: Xóa giá trị trong thanh ghi TMR0 =0
B2: Xóa cờ báo tràn( cờ ngắt) TMR0IF=0
B3: Chọn chế độ hoạt động của Counter 0
• Chọn chế độ đếm sự kiện (Counter) T0CS =1
• Kích hoạt hoặc không cho phép ngắt GIE=0, TMR0IE=0
• Gán giá trị prescaler cho Timer 0 PSA =
• Chọn loại kích của nguồn xung bên ngoài T0SE=
B4: Đọc giá trị về và xử lý xung đếm trong thanh ghi TMR0.
Lưu ý:
14. Ví dụ mô phỏng
Lập trình khởi tạo cho timer0 để tạo thời gian trễ
t=[256-0] *1us*16=4096us=4,1ms=0.0041s
fosc= 4MHz
Xác định:
Giá trị ban đầu TMR0=0;
Hệ số chia trước 1:16 (ps2=0; ps1=1; ps0=1)
15. Khởi tạo giá trị cho Timer0 (hitech-C)
TMR0
0 0 0 0 0 0 0 0
INTCON
0
OPTION_REG
0 0 0 0 0 0 1 1
TMR0IF
This interrupt flag will set on
Timer0 overflow even if
interrupts are disabled
PSA
PS<2:0>
TOCS
Selects Timer 0
Clock Source
(External or Internal)
Prescaler
Assignment
(WDT or TMR0)
Prescaler
value = 1:16
1
;Xóa giá trị đếm cho Timer0
;Xóa TMR0
TMR0=0x00;
;Xóa cờ ngắt Timer0 TMR0IF
TMR0IF=0;
;Thiết lập thanh ghi OPTION_REG ;
;với xung clock bên trong với bộ
;chia tần 1:16
BANKSEL OPTION_REG
MOVLW b’00000011’
OPTION_REG=0x03
;Kiểm tra cờ tràn TMR0IF nếu tràn
;thì tiếp tục
while(!TMR0IF) {}
<continue>
1 1 1 1 1 1 0 0
1 1
1
0 0 0 0 0 0 0 0
Timer0
incrementing
Flag on overflow
16. Ví dụ 1:
Dựa vào sơ đồ viết lưu đồ giải thuật và viết chương
trình tạo sóng xung vuông có tần số 500Hz tại chân
RE1 và 2Hz tại chân RE2 dùng Timer 0 để định thời.
Ta có: Td1 = 1/500Hz = 2ms tdelayT0 = 1ms
Td2 = 1/2Hz = 500ms = 250 Td1
17. Begin
Cấu hình các
PORT digital
Cấu hình các PORT E:
output
PORTE=0
COUNT=250
TMR0=6
TMRIF=0
Đặt chế độ Timer0
Pre=4
Timer0
TMR0IF
=1?
RE1=!RE1
COUNT- -
COUNT
=0?
RE2=!RE2
LOOP1
LOOP2
Sơ đồ giải
thuật:
19. Ví dụ 2: Dựa vào sơ đồ viết lưu đồ giải thuật và viết
chương trình điều khiển đếm số lần nhấn nút SW0
được nối với ngõ vào của counter 0 (T0CKI) và hiển
thị giá trị này trên 8 led đơn dùng counter 0.
20. Begin
Cấu hình các
PORT digital
Cấu hình các PORT C:
output
Đặt chế độ Timer0:
Mode: Counter
Prescaler:1:2
PrescalerWDT
Sơ đồ giải thuật:
Cấu hình chân nối
RA4: input
Đặt giá trị ban đầu cho
bộ đếm(TMR0=0)
Xóa cờ báo tràn
Timer0
Đọc giá trị từ bộ
đếm & xuất giá trị
lên LED
22. Bài tập Timer0
Bài 1: Viết chương trình delay 4ms dùng Timer 0
biết fOSC=4Mhz
Bài 2: Chỉ dùng Timer 0 viết chương trình delay có
thời gian lớn nhất biết fOSC=4Mhz.
Bài 3: Cho sơ đồ giống như ví dụ 2. Viết chương
trình khi nhấn nút SW0 thì số đếm giảm từ 2000
hiển thị trên 8 led đơn.
24. Bài kiểm tra21/09/2023 lớp
DHDTMT17ATT
a. Viết chương trình có tên TD_ms() theo yêu cầu sau:
Biết tdelay=25ms; fosc=8MHz; Phải sử dụng module timer
0 để định thời gian.
b. sử dụng chương trình trên làm chương trình delay, hãy
viết chương trình điều khiển 8 led nối với portC của PIC
16f887 và các nút nhấn sw1 và sw2 và sw3 (theo kết nốicho
trước), thực hiện theo yêu cầu sau:
– Khi nhấn/nhả sw1( nối với RB0) 8 led sáng đuổi từ
MSB LSB.
– Khi nhấn/nhả sw2( nối với RE0) 8 led sáng dần từ LSB
MSB.
– Khi nhấn/nhả sw3( nối với RA4) 8 led tắt.
Biết Fosc=8MHz ; thời gian chuyển giữa các trạng thái
là Td = 100ms.
25. Kiểm tra 20/09/2023
a. Viết chương trình có tên TD_ms() theo yêu cầu
sau:
Biết tdelay=25ms; fosc=8MHz; Phải sử dụng
module timer 0 để định thời gian.
b. sử dụng chương trình trên làm chương trình
delay, hãy viết chương trình điều khiển 8 led nối
với PORTC thực hiện yêu cầu sau với sw1 và sw2
và sw3 (tự thiết kế mạch):
- Khi nhấn nhả swi.
với td=100ms
26. t_delay = 25 ms = 25000 us.
f_xtal = 8 MHz t_xung=0.5 us.
Số lượng xung cần đếm:
n_xung=50000.
Chọn tỉ lệ chia tần trước presT0 là 8
[với giá trị này, số xung cần đếm sẽ là
50000/8= 6250]
+ Chọn số đếm cho TMR0 là 250
+ Số lần đếm cờ báo tràn (TMR0IF)
nIF = 25
Thanh ghi OPTION có: PS<2:0>=
010; PSA=0; T0SE=0; T0CS=0;
TMR0 = 256-250
TMR0IF=0;
28. Đặc điểm của Timer 1
Là Timer/Counter 16 bit gồm 2 thanh ghi
TMR1H và TMR1L có thể đọc và ghi
Timer1 có thể hoạt động ở chế độ định thời
hay đếm được lựa bởi bit TMR1CS.
Trong chế độ định thời T1 tăng giá trị ở mỗi
chu kỳ lệnh, chế độ đếm bộ đếm tăng mỗi khi
có cạnh clock ngõ vào bên ngoài
Có bộ prescale chia tần 3 bit
Xảy ra hiện tượng ngắt khi tràn từ
FFFFh0000h
Có khả năng “đánh thức” vi điều khiển từ chế
độ “ngủ” nhờ có thêm bộ dao động bên ngoài.
30. Timer1 External Clock Input Synchronization
1 = do not synchronize external clock input
0 = synchronize external clock input with
internal clock (Fosc/4)
Sơ đồ khối Timer1
T1CKI
pin
T1
OSC
T1OS0
T1OSI
prescaler
synchronize
Thanh ghi điều khiển (T1CON)
Fosc/4
TMR1H TMR1L
Timer1 Gate Enable and
Timer1 Gate Invert are
available on some devices
Enable
TMR1ON
T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
T1GINV TMR1GE
31.
32. Các bước để định thời gian Timer 1
B1: Tính toán các giá trị cần đưa vào code:
Đối với dao động nội:
Đối với nguồn xung clock bên ngoài lấy từ bộ dao động Timer1
(thạch anh gắn trên 2 chân T1OS1 và T1OS0)
Trong đó:
tdelay: thời gian cần định thời (us)
fOSC: tần số dao động thạch anh
fOSC(T1): tần số dao động Timer1
Pre:hệ số chia tần trước prescaler(Pre=1,2,4,8)
[TMR1]: giá trị cần ghi vào thanh ghi TMR1
TMR1H: Byte cao của [TMR1]
TMR1L: Byte thấp của [TMR1]
TMR1 =15536D = 3CB0H-> TMR1H =3CH =00111100B ;
TMR1L=B0H = 10110000B;
33. Các bước để định thời gian Timer 1
B2: Ghi vào thanh ghi TMR1( gồm TMR1H:TMR1L) được xác định ở
trên
B3: Xóa cờ báo tràn (cờ ngắt) TMR1IF
B4: Chọn chế độ hoạt động của Timer1
• Chế độ định thời gian (Timer)
• Kích hoạt hoặc vô hiệu hóa các ngắt
• Chọn giá trị prescale
B5: Cho phép Timer1 bắt đầu hoạt động
B6: Xác định thời điểm Timer1 bị tràn bằng cách:
• Kiểm tra cờ TMR1IF( nếu dùng thăm dò)
• Xử lý ISR của Timer 1 (nếu dùng ngắt)
34. Các bước để đếm sự kiện Counter 1
B1: Xóa giá trị trong thanh ghiTMR1
B2: Xóa cờ báo tràn (cờ ngắt) TMR1IF
B3: Chọn chế độ hoạt động của Counter 1
• Chế độ đếm sự kiện (Counter 1)
• Kích hoạt hoặc vô hiệu hóa các ngắt(tùy chọn)
• Chọn giá trị tỉ lệ của prescale
• Chọn tính năng đồng bộ hoặc không đồng bộ xung
B4: Cho phép Counter 1 bắt đầu hoạt động
B5: Đọc về và xử lý số đếm xung đếm được trong thanh ghi
TMR1(TMR1H:TMR1L)
35. Ví dụ mô phỏng
Lập trình khởi tạo cho timer1 để tạo thời
gian trễ td=
fosc= 4MHz
Xác định:
Giá trị ban đầu TMR1H= ..;
TMR1L= ..;
Hệ số chia trước 1:8
38. Viết CT Delay_2s sử dụng Timer1
Tính toán:
t_delay = 2s = 2000000
us; f_xtal = 8 MHz
t_xung=0.5 us
Số lượng xung cần
đếm: n_xung=4000000
Với Timer1:
+ Chọn tỉ lệ chia tần
trước prescale là 8
+ Chọn dung lượng
đếm Timer1 là 50000
+ Số lần đếm cờ báo tràn
Timer1 là 10
40. Ví dụ 3: Dựa vào sơ đồ viết chương trình điều
khiển tạo sóng xung vuông có chu kỳ 100ms tại
chân RE1 và 500ms tại chân RE2
41. Begin
Cấu hình các
PORT digital,
PORTE: output
Cấu hình các PORT E:
output
count=5
TMR1IF=0
TMR1=15536
T1CON=b’00000001’
TMR1IF
=1?
RE1=!RE1
count - -
count
=0?
RE2=!RE2
LOOP
N
Sơ đồ giải thuật
dùng “thăm dò” :
Y
N
Y
44. Ví dụ 4: Dựa vào sơ đồ viết chương trình điều
khiển tạo sóng xung vuông có chu kỳ 2s tại chân
RE1.
45. Begin
Cấu hình các
PORT digital
Cấu hình PORT E:
output
TMR1IF=0
TMR1=0x8000
T1CON=b’00001111’
TMR1IF
=1?
RE1=!RE1
LOOP
N
Sơ đồ giải thuật
dùng “thăm dò” :
Y
48. Bài tập Timer1
Bài 1: Viết chương trình delay 100ms dùng
Timer1 biết fOSC=4Mhz
Bài 2: Chỉ dùng Timer1 viết chương trình
delay có thời gian lớn nhất biết fOSC=4Mhz
Bài 3: Viết chương trình delay 10s dùng
Timer 1 sử dụng bộ dao động bên ngoài gắn
trên 2 chân RC1/T1OSI, RC2/T1OSO có
f =32768 Hz
49. Đặc điểm của Timer 2
Là Timer 8 bit có bộ prescale và postscale
Được sử dụng như bộ tạo xung có PWM
cho chế độ hoạt động PWM của khối CCP
Thanh ghi TMR2 có thể đọc ghi và xóa khi
bị reset
Có bộ chia tần số trước prescale với bit
điều khiển T2CKPS1:T2CKPS2
Ngõ ra TMR2 đi qua bộ postscale 4 bit để
tạo ra yêu cầu ngắt TMR2 được chốt trong
cờ TMR2IF(PIR1<1>)
Tạo tín hiệu ngắt khi giá trị TMR2 bằng PR2
Chỉ sử dụng nguồn xung clock bên trong
53. Khi sử dụng Timer2 cần chú ý:
Khi mới cấp nguồn thì PR2=0xFF
Prescaler và Postscaler sẽ bị xóa khi:
• Ghi dữ liệu vào TMR2
• Ghi dữ liệu vào T2CON
• Bất cứ sự kiện reset nào((WDT,POR,BOR)
Khi reset vi điều khiển thì Prescaler và Postscaler sẽ
bị xóa
TMR2 bị xóa khi ghi giá trị vào T2CON
TMR2 sẽ tăng giá trị từ 00h đến khi bằng PR2 sau đó
TMR2 sẽ được reset về 0 vào chu kỳ tăng kế tiếp
Sự kiện ngắt khi TMR2=PR2 không thể làm “đánh
thức” vi điều khiển khỏi chế độ “ngủ“.
Timer 2 ít dùng để định thời gian. Nó thường dùng cho
CCP để tạo xung PWM
54. Các bước để định thời gian Timer 2
B1: Tính toán các giá trị cần đưa vào code:
Đối với dao động nội:
Trong đó:
tdelay: thời gian cần định thời (us)
fOSC: tần số dao động thạch anh(Mhz)
Pre: hệ số chia tần trước Prescaler(Pre=1,4,16)
Post: hệ số chia tần sau Postscaler(Post=1,2,...,16)
[TMR2]: giá trị cần ghi vào thanh ghi TMR2
[PR2]: giá trị cần ghi vào thanh ghi PR2
ௗ௬
ைௌ
55. Các bước để định thời gian Timer 2
B2: Ghi vào thanh ghi PR2 giá trị đã tính toán
B3: Xóa cờ báo tràn (cờ ngắt) TMR2IF
B4: Chọn chế độ hoạt động của Timer 2
Kích hoạt hoặc vô hiệu hóa các ngắt
Chọn giá trị Pre
Chọn giá trị Post
B5: Cho phép Timer 2 bắt đầu hoạt động
B6: Xác định thời điểm Timer 2 bị tràn bằng
cách:
Kiểm tra cờ TMR2IF (dùng thăm dò)
Xử lý ISR của Timer 2 (nếu dùng ngắt)
56. Khởi tạo Timer2 (C)
TMR2 (Timer2 Counter)
0 0 0 0 0 0 0 0
T2CON (Timer2 Control)
PIR1 (Peripheral Interrupt Request)
TMR2IF
PIE1 (Peripheral Interrupt Enable)
TMR2IE
0
0
1
0
0 0
0 1
1
1
;Disable the Timer2 interrupts in the PIE1
;Cấm ngắt Timer2 trong thanh ghi PIE1
;Xóa cờ ngắt TMR2IF trong thanh ghi PIR1
TMR2IE=0;
TMR2IF=0;
;Setup thanh ghi T2CON Postscaler = 1:15,
;Prescaler = 1:16, Timer2 off
T2CON=0x72;
;Xóa thanh ghi TMR2
TMR2=0;
;Khởi tạo giá trị PR2
PR2=0x80
;Timer2 bắt đầu đếm lên
TMR2ON=1;
;Kiểm tra cờ ngắt TMR2IF
while (!TMR2IF)
{}
1
Postscaler = 1:15
(TOUTPS<3:0>)
TMR2ON
Prescaler = 1:16
(T2CKPS<1:0>)
1
PR2 (Period Register Timer2)
0 0 0 0 0 0 0
1
Flag is set
Timer2
Incrementing
1 1 1 1 1
1
1 1
1
1 1
1
57. Ví dụ 5: Dựa vào sơ đồ viết chương trình điều
khiển tạo sóng xung vuông có tần số 10Hz và
100Hz tại chân RE1 và RE2.
58. Begin
Cấu hình các
PORT digital
Cấu hình PORT E:
output, PORTE=0
TMR2IF=0
PR2=249, count=0
T2CON=b’00100001’
(Pre=1:4,Post=1:5)
count
=10?
ISR:
N
Sơ đồ giải thuật
dùng ngắt :
Y
TMR2IE=1
PEIE=1
GIE=1
TMR2IF=0
RE1=!RE1
count++
count=0
RE2=!RE2
RETFIE
60. Bài tập Timer2
Bài 1: Viết chương trình delay 1ms dùng
Timer2 biết fOSC=4Mhz
Bài 2: Chỉ dùng Timer2 viết chương trình
delay có thời gian lớn nhất biết fOSC=4Mhz
61. Bài tập tổng hợp
Bài tập tổng hợp
Bài 1: Viết chương trình delay 1s dùng Timer0, Timer1,
Timer2 biết fOSC=4Mhz
Bài 2: Viết chương trình tạo xung 10Hz trên chân RB7
Bài 3: Viết chương trình tạo xung có tần số 20Hz trên chân
RB0, chu kỳ nhiệm vụ D=40%.
Bài 4: Viết chương trình đếm sự kiện tại chân T0CKI kết
quả được hiển thị số đếm trên 8 led nối với PORT B biết
xung clock tác động từ mức cao xuống thấp.