Khi bộ ADC thực hiện xong một chu kỳ chuyển đổi, kết quả chuyển đổi sẽ đợc lu vào thanh ghi ADCL và ADCH, tiếp sau đó cờ ngắt kết thúc chuyển đổi
A/D đợc dựng và chơng trình con phục vụ ngắt tơng ứng là END_CONVERT
đợc gọi.
Hình 4.6 : Lu đồ chơng trình con phục vụ ngắt END_CONVERT
Trong ngắt END_CONVERT có sử dụng hai module MULL_RESULT_CONVER
và DIVIDE_TO_GET_TEMPR đợc sử dụng để chuyển kết quả ADC sang số thập phân. Trớc khi thực hiện các module này cần phải xác định số nhân hoặc số chia trong thanh ghi Data. Chơng trình MULL_RESULT_CONVER sẽ thực hiện nhân nội
Bắt đầu
Lưu lại trạng thái MCU Lấy kết quả chuyển đổi A/D Lưu lại các thanh ghi cần sử dụng
Gửi ký hiệu truyền dữ liệu ( # ) sang PC
Lấy phần nguyên của kết quả ADC đặt vào ResultADCH
Thực hiện chương trình MULL_RESULT_CONVER vớisố nhân = 100 Thực hiện chuơng trinh DIVIDE_TO_GET_TEMPR với số chia = 255
Gửi phần nguyên của kết quả ADC sang PC
Lấy phần thập phân của kết quả ADC đặt vào ResultADCL
Thực hiện chương trình MULL_RESULT_CONVER vớisố nhân = 10 Thực hiện chuơng trinh DIVIDE_TO_GET_TEMPR với số chia = 255
Gửi phần thập phân của kết quả ADC sang PC
Dựng cờ báo cần hiển thị kết quả ADC ra giao diện LCD Lấy lại giá trị các thanh ghi sử dụng Lấy lại trạng thái MCU
ResultADCH và ResultADCL. Chơng trình DIVIDE_TO_GET_TEMPR thực hiện chia kết quả từ chơng trình MULL_RESULT_CONVER cho nội dung thanh ghi Data, phần nguyên của kết quả đặt trong thanh ghi ResultADCH, phần d của kết quả đặt trong thanh ghi ResultADCL.
Hình 4.7 : Lu đồ chơng trình MULL_RESULT_CONVER
Hình 4.8 : Lu đồ chơng trình DIVIDE_TO_GET_TEMPR
Trang 112
Bắt đầu
Xoá cờ carry ( C = 0 ) Khởi tạo các thanh ghi tạm
R11 = 0, R12 = ResultADCL Giảm số nhân đi một
Data Data - 1 Kết thúc Data = 0? Y N ResultADCL ResultADCL + R12 ResultADCH ResultADCH + R11 + C Bắt đầu Xoá cờ carry ( C = 0 )
Khởi tạo các thanh ghi tạm R11 0, R12 0
ResultADCL ResultADCL - Data ResultADCH ResultADCH - R11 - C C 0
R12 R12+1
Kết thúc
N
Lấy phần nguyên của kết quả ResultADCH R12
ResultADCL < Data? N
ResultADCH = 0? Y
Ngoài hai module trên, để hiển thị kết quả chuyển đổi A/D tới giao diện
LCD, cần sử dụng chơng trình con DISPLAY_TEMPR_TO_LCD chơng trình
này đợc gọi từ chơng trình điều khiển khi cờ báo có kết quả ADC cần đợc hiển thị. Dữ liệu đầu vào của chơng trình này là nội dung hai thanh ghi chứa kết quả A/D dới dạng số hệ 10 sau khi thực hiện ngắt END_CONVERT, trong đó phần nguyên chứa trong thanh ghi ResultADCH và phần thập chứa trong thanh ghi ResultADCL.
Hình 4.9 : Lu đồ chơng trình con DISPLAY_TEMPR_TO_LCD
Kết thúc Bắt đầu
Lấy toạ độ đầu Instr $CB Lưu nội dung ResultADCL ResultADCL ResultADCH ResultADCL 0
N
Show_CK = 1? Y Đổi giá trị nhiệt độ sang 0K
ResultADCH:ResultADCL ResultADCH:ResultADCL + 273
Lấy số hàng trăm để hiển thị
Gọi chương trình DIVIDE_TO_GET_TEMPR với Data = $64
Y
ResultADCH = 0? N
Lấy mã ASCII của số cần hiển thị
Data ResultADCH Data Data + 30
Không hiển thị số hàng trăm
Data $20
Hiện dữ liệu
Lấy số hàng chục để hiển thị
ResultADCH 0
Gọi chương trình DIVIDE_TO_GET_TEMPR với Data = $0A
Y
ResultADCH = 0? N
Lấy mã ASCII của số cần hiển thị
Data ResultADCH Data Data + $30 Hiện 0 ở hàng chục Data $30 Hiện dữ liệu Hiện số hàng đơn vị Data ResultADCL Data Data + $30 Hiện dữ liệu
Hiện dấu chấm thập phân
Data $2E
Hiện dữ liệu Hiện số thập phân
Lấy lại nội dung ResultADCL Data ResultADCL
Data Data + $30