Sự khởi động và truy xuất các thanh ghi timer:

Một phần của tài liệu 215414 (Trang 29 - 34)

- Các Timer được khởi động 1 lần ở đầu chương trình để đặt mode hoạt động cho chúng. Sau đĩ trong chương trình các Timer được bắt đầu, được xĩa,

các thanh ghi Timer được đọc và cập nhật . . . theo yêu cầu của từng ứng dụng cụ thể.

Mode Timer TMOD là thanh ghi đầu tiên được khởi gán, bởi vì đặt mode hoạt động cho các Timer. Ví dụ khởi động cho Timer 1 hoạt động ở mode 1 (mode Timer 16bit) và được ghi giờ bằng dao động trên Chip ta dùng lệnh: MOV TMOD,# 00001000B.

Trong lệnh này M1 = 0, M0 = 1 để vào mode 1 và C/T = 0, GATE=0 để cho phép ghi giờ bên trong đồng thời xĩa các bit mode của Timer 0. Sau lệnh trên Timer vẫn chưa đếm giờ, nĩ chỉ bắt đầu đếm giờ khi set bit điềàu khiểân chạy TR1 của nĩ.

- Nếu ta khơng khởi gán giá trị đầu cho các thanh ghi TLx/THx thì Timer sẽ bắt đầu đếm từ 0000H lên và khi tràn từ FFFFH sang 0000H nĩ sẽ bắt đầu tràn TFx rồi tiếp tục đếm từ 0000H lên tiếp . . .

- Nếu ta khởi gán giá trị đầu cho TLx/THx, thì Timer sẽ bắt đầu đếm từ giá trị khởi gán đĩ lên nhưng khi tràn từ FFFFH sang 0000H lại đếm từ 0000H lên.

- Chú ý rằng cờ tràn TFx tự động được set bởi phần cứng sau mỗi sự tràn và sẽ được xĩa bởi phần mềm. Chính vì vậy ta cĩ thể lập trình chờ sau mỗi lần tràn ta sẽ xĩa cờ TFx và quay vịng lặp khởi gán cho TLx/THx để Timer luơn luơn bắt đầu đếm từ giá trị khởi gán lên theo ý ta mong muốn.

Timer Operating Mode 1.

-Đặc biệt những sự khởi gán nhỏ hơn 256 µs, ta sẽ gọi mode Timer tự động nạp 8 bit của mode 2. Sau khi khởi gán giá trị đầu vào THx, khi set bit TRx thì Timer sẽ bắt đầu đếm giá trị khởi gán và khi tràn từ FFH sang 00H trong TLx, cờ TFx tự động được set đồng thời giá trị khởi gán mà ta khởi gán cho THx được nạp tự động vào TLx và Timer lại được đếm từ giá trị khởi gán này lên. Nĩi cách khác, sau mỗi tràn ta khơng cần khởi gán lại cho các thanh ghi Timer mà chúng vẫn đếm được lại từ giá trị ban đầu.

INTO (P3.2) 16 Bit 16 Bit 0 = Up 0 = Up 1 = Down 1 = Down On Chip Osillator ÷ 12 TL0 TH 0 TF0 C/T TR0 GATE 12 MHz T0 (P3.4)

I.1.4 Thu phát nối tiếp:

-8951 cĩ chức năng thu hoặc phát qua 2 chân TxD ( chân P3.1 ) và chân RxD (chân P3.0). dữ liệu được chuyển từ dạng song song sang nối tiếp để truyền đi trên chân TxD và ở phía thu sẽ cĩ sự chuyển đổi từ nối tiếp sang song song.

Cĩ hai thanh ghi chức năng đặc biệt được sử dụng cho port nối tiếp là SBUF và SCON . thanh ghi SBUF cĩ địa chỉ 99H thật sự là hai thanh ghi, một dùng để load data để truyền đi, và một dùng để nhận data vào. Thanh ghi SCON dùng cho việc điều khiển hoạt động thu pháp nối tiếp.

2.Thanh ghi SCON:

BIT KÝ

HIỆU

ĐỊA CHỈ CHỨC NĂNG

SCON. 7

SM0 9FH Thiết lập mode làm việc cho port nối tiếp (cho ở bảng sau) SCON. 6 SM1 9EH SCON. 5

SM2 9DH Cho phép truyền thơng đa xử lý

SCON. 4

REN 9CH Cho phép thu. Đặt lên 1 khi thu ký tự

SCON. 3

TB8 9BH Phát bit thứ 8 bit thứ 9 . Bit này được xố hoặc đặt bằng mềm

2 SCON. 1

TI 99H Cờ ngắt phát set lên 1 sau khi 1 ký tự được truyền

SCON. 0

RI 98H Cờ ngắt thu set lên 1 sau khi nhận xong 1 ký tự

3. Các mode của port nối tiếp:

SM0 SM1

MODE CHỨC NĂNG BAUD RATE (adsbygoogle = window.adsbygoogle || []).push({});

0 0 0 Shift Register Cố định ( fck÷ 12 ) 0 1 1 8-bit UART Thay đổi set bởi

timer

1 0 2 9-bit UART Cố định fck÷12 or

÷24

1 1 3 9-bit UART Cố định set bởi timer

3.1 8-Bit Shift Register (mode 0):

Ở mode 0 chân RxD dùng để truyền hoặc nhận data cịn chân TxD xuất ra xung clock. Cứ một xung clock sẽ cĩ một bit được nhận hay truyền,tần số clock = fck ÷12 (baud rate được cố định). Việc truyền được thực hiện bằng lệnh xuất data ra SBUF cịn việc nhận data chỉ cho phép khi REN = 1 , RI = 0 và dùng lệnh đọc data từ SBUF về.

Ở mode này data được truyền theo nối tiếp,cĩ 10 bit được truyền đi trên đường TxD bao gồm 1 bit start, 8 bit data, 1 bit stop. Baud rate được xác định bằng tốc độ tràn timer 1. việc truyền và nhận data giống như trên.

Một phần của tài liệu 215414 (Trang 29 - 34)