Sự khởi động và truy suất các thanh ghi Timer

Một phần của tài liệu 255052 (Trang 44 - 45)

Các Timer đƣợc khởi động một lần ở đầu chƣơng trình để đặt mode hoạt động cho chúng. Sau đó trong thân 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à thanhg 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 16 bit) 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 = 0 để 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 lại đếm từ 0000H lên.

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

Chú ý cờ tràn TFx tự động sẽ đƣợc sét lên bởi phần cứng sau mỗi su75 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.

Đặ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ờ TRx tự động đƣợc set đồng thời giá trị mà ta khởi gán cho THx đƣợc nạ\p tự động vào TLx và Timer lại đế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.

Một phần của tài liệu 255052 (Trang 44 - 45)