IV. HOẠT ĐỘNG TIMER CỦA 8051:
7. SỰ KHỞI ĐỘNG VAØ TRUY XUẤT CÁC THANHGHI TIME R:
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 thân chương trình các Timer đượcbắ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ừ 0000Hlê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.
Đặ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.