MỤC LỤC
Khi đó nếu được cho phép hoạt động, bộ đếm của WDT sẽ bị xóa nhưng WDT vẫn tiếp tục hoạt động bit PD (STATUS <3>) được reset về không, bit TO được set, oscillator ngưng hoạt động và các PORT giữ nguyên trạng thái như trước khi lệnh sleep được thực thi. • Cần đảm bảo rằng không có mạch ngoại vi nào được điều khiển bởi dòng điện của VĐK vì dòng điện nhỏ không đủ khả năng cung cấp cho các mạch ngoại vi hoạt động. Giả sử bạn viết một chương trình, bạn mong đợi chương trình này sẽ chạy nếu không có gì trục trặc xảy ra thì nó sẽ không bao giờ dừng lại, như vậy bạn phải làm một vòng lặp để khi chương trình chạy đến điểm cuối thì nó lại quay trở về điểm bắt đầu.
Nhưng mà hãy xem một trường hợp: Giả sử chương trình kiểm tra một chân input, nếu nó lên mức cao thì Pic16f877A sẽ tiếp tục kiểm tra một chân input thứ hai có lên mức cao hay không, nếu chân input thứ hai không lên mức cao, con Pic sẽ ngồi đó chờ và nó sẽ chỉ thoát ra khỏi chỗ ngồi của nó nếu chân input thứ hai lên mức cao. Bây giờ hãy xem một trường hợp khác, giả sử như bạn viết một chương trình, bạn compiled nó thành công, và ngay cả bạn đã cho chạy mô phỏng từng bước, từng bước một trên máy tính, bằng MPLAB chẳng hạn, có vẻ như mọi chuyện đều tốt, bạn đem nạp vào con Pic.
Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h (Reset vector). Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h (Interrupt vector). Vùng RAM đa mục đích có chiều rộng 8 bit và có thể được truy nhập trực tiếp hoặc gián tiếp thông qua thanh ghi FSR.
Các thanh ghi chức năng đặc biệt được sử dụng bởi bộ xử lý trung tâm CPU hoặc các module ngoại vi để điều khiển hoạt động của VĐK. Các thanh ghi chức năng đặc biệt này được chia làm 2 loại: loại thứ nhất dùng cho các chức năng của CPU, loại thứ 2 dùng cho các chức năng ngoại vi.
Chú ý: Bit PEIE (INTCON<6>) phải được set để cho phép bất kì ngắt ngọai vi nào xảy ra.
EEPROM là bộ nhớ có khả năng đọc và ghi trong điều kiện làm việc bình thường (khi nguồn Vdd không đổi). Trong đó thanh ghi EEDATA lưu giữ giá trị 8 bit sẽ được ghi hoặc đọc. Thanh ghi EEADR lưu giữ địa chỉ mà chúng ta muốn ghi hoặc đọc, thanh ghi này có khả năng định địa chỉ cho 256 byte EEPROM.
Thanh ghi EECON1 chứa các bit điều khiển còn thanh ghi EECON2 được sử dụng để khởi tạo quá trình ghi/đọc.
Bốn chân của Port B từ RB7 đến RB4 có chức năng ngắt khi trạng thái chân Port B thay đổi (Khi Port B được quy định là output thì chức năng này không hoạt động. Giá trị chân của PortB được so sánh với giá trị đã được lưu trước đó, khi có sự sai lệch giữa 2 giá trị này ngắt sẽ xảy ra với cờ ngắt RBIF (INTCON<0) sẽ bật lên. Một số chức năng ngoại vi sẽ ghi đè giá trị 0 lên các bit của thanh ghi TRISC và mặc định các chân này là output, ngoài ra một số chức năng ngoại vi khỏc sẽ tự động mặc định một số chõn là ngừ vào.
Bên cạnh chức năng là port xuất nhập, PortD còn có thể hoạt động như một cổng song song bằng cách set bit PSPMODE (TRISD<4>), trong chế độ này buffer ngừ vào là TTL. Ngoài ra cỏc chõn Port E cũn cú thể được cấu hỡnh như cỏc ngừ vào Analog, tại chế độ này, khi đọc giá trị của các chân này sẽ cho ta giá trị là 0.
Cờ ngắt T0IF phải được xóa bằng phần mềm truớc khi thoát khỏi chương trình ngắt trở về chương trình chính. Khi bộ tiền định tỉ lệ khụng được sử dụng, ngừ vào xung clock ngoại cũng giống như ngừ ra bộ tiền định tỉ lệ. Nguồn xung clock ngoại sẽ được đồng bộ với xung clock nội bằng cách: nó sẽ được lấy mẫu tại chu kỳ Q2 và Q4 của xung clock nội.
Bộ đếm 8 bit được sử dụng như bộ tiền định tỉ lệ cho Timer 0 hoặc bộ hậu định tỉ lệ cho WDT.
Trong chế độ này, xung clock cung cấp cho Timer 1 là Fosc/4, bit đồng bộ T1SYNC (T1CON<2>) không có tác dụng vì xung clock nội đã luôn luôn được đồng bộ. Bộ định thời sẽ tiếp tục đếm trong suốt quá trình Sleep của VĐK và có khả năng tạo ra một ngắt khi bộ định thời tràn và làm VĐK thoát khỏi trạng thái ngủ. Việc đọc thanh ghi TMR1H hoặc TMR1L trong khi bộ định thời đang chạy từ một nguồn xung clock ngoài không đồng bộ sẽ cho giá trị tức thời (không phải ngưng Timer lại).
Tuy nhiên, phải chú ý rằng việc đọc Timer 1 sẽ phải bao gồm 2 lần đọc giá trị 8 bit, do đó có thể phát sinh vấn đề là Timer có thể bị tràn giữa 2 lần đọc. Chúng ta có thể tạo một bộ dao động độc lập cho Timer 1 bằng cách sử dụng thạch anh có tần số tối đa 200Khz.Với bộ dao động này Timer có thể đếm ngay cả khi VĐK rơi vào trạng thái ngủ.
Cùng lúc khối p lại nhận thêm các điện tử (điện tích âm) từ khối n chuyển sang. Kết quả là khối p tích điện âm (thiếu hụt lỗ trống và dư thừa điện tử) trong khi khối n tích điện dương (thiếu hụt điện tử và dư thừa lỗ trống). Ở biên giới hai bên mặt tiếp giáp, một số điện tử bị lỗ trống thu hút và khi chúng tiến lại gần nhau, chúng có xu hướng kết hợp với nhau tạo thành các nguyên tử trung hòa.
Tùy theo mức năng lượng giải phóng cao hay thấp mà bước sóng ánh sáng phát ra khác nhau (tức màu s ắ c của LED sẽ khác nhau). LED thường có điện thế phân cực thuận cao hơn điốt thông thường, trong khoảng 1,5 đến 3 V.
Nếu led 7 đoạn có Cathode(cực -) chung, đầu chung này được nối xuống Ground (hay Mass), các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 1. Vì led 7 đoạn chứa bên trong nó các led đơn, do đó khi kết nối cần đảm bảo dòng qua mỗi led đơn trong khoảng 10mA-20mA để bảo vệ led. Nếu kết nối với nguồn 5V có thể hạn dòng bằng điện trở 330Ω trước các chân nhận tín hiệu điều khiển.
Phần cứng được kết nối với 1 Port bất kì của Vi điều khiển, để thuận tiện cho việc xử lí về sau phần cứng nên được kết nối như sau: Px.0 nối với chân a, Px.1 nối với chân b, lần lượt theo thứ tự cho đến Px.7 nối với chân h.
Thời gian ON/OFF chỉ trong khoảng vài chục às, và tại mỗi thời điểm chỉ cú mỗi một led 7 đoạn hiện thị số của chính nó, vì vậy mắt người thấy 3 led 7 đoạn không sáng đứt quãng, mà sáng liên tục, mỗi led hiển thị 1 số riêng của nó.
Đối với quan hệ tuyến tính, tần vào được lượng tử hóa theo đúng mức này. Mỗi mức như vậy là một tín hiệu Analog được phân biệt với hai mã kế tiếp nhau, nó chính là kích thước của LSB (Least Significant Bit). Tất cả các giá trị Analog của lượng tử Q được biểu diễn bởi mã số, mà mã này tương ứng với giá trị trung bình của lượng tử (có thể hiểu là giữa khoảng LSB) gọi là mức ngưỡng.
Cỏc giỏ trị Analog nằm trong khoảng từ mức ngưỡng sai biệt đi ± ẵ LSB vẫn được thể hiện bằng cùng một mã, đó là sai số lượng tử hóa. Sai số này có thể sẽ giảm đi bằng cách tăng số bit trong mã ra bộ ADC. Tần số lẫy mẫu càng cao thì độ chính xác của rời rạc hóa là càng cao và ngược lại, nếu tần số lấy mẫu càng lớn thì cần lượng dữ liệu lớn do đó cần bộ nhớ lớn và khi đó xử lý sẽ rất phức tạp.
Lượng tử hóa ở đây có nghĩa là dùng một thước đo với k bậc nhị phân ( tức là 2K khoảng bằng nhau ) để đo các xung được lấy mẫu ví dụ. Máy tính sẽ thu nhận giá trị này rồi thực hiện việc lưu trữ , xử lý. Trờn VĐK cú một bộ biến đổi ADC 10bit, 8 ngừ vào Analog, 8 ngừ vào này được nối với ngừ vào của bộ chuyển đổi.
Sau đú bộ chuyển đổi sẽ tạo ra một kết quả 10 bit tương ứng với giá trị Ananlog đầu vào. Module ADC là module duy nhất có khả năng hoạt động trong chế độ ngủ. Để hoạt động trong chế độ ngủ Sleep, xung clock cung cấp cho ADC phải được nhận từ dao động nội RC của ADC.
// Constants used for SETUP_COUNTERS() are the above // constants for the 1st param and the following for.