21.07.2013 Views

THỰC HÀNH VI XỬ LÝ - Khoa Khoa học và Kỹ thuật Máy tính

THỰC HÀNH VI XỬ LÝ - Khoa Khoa học và Kỹ thuật Máy tính

THỰC HÀNH VI XỬ LÝ - Khoa Khoa học và Kỹ thuật Máy tính

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Trường ĐH. Bách <strong>Khoa</strong> TP.HCM <strong>Khoa</strong> KH & KTMT<br />

RETURN<br />

Bước 6: Ban đầu ta khởi tạo các buffer để hiển thị cũng như quét cột led.<br />

Để dễ dàng trong việc sử lý ta sẽ khởi tạo cho Column_Buffer các giá trị tương<br />

ứng làm sao, khi xuất ra nó chỉ tích cực một cột của led mà thôi. Ở đây giả sử tích<br />

cực tại mỗi cột là tích cực mức cao thì ta có thể khởi tạo cho Column_buffer các<br />

giá trị sau: 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80.<br />

Bước 7: Đến đây mọi sử chuẩn bị đã xong, ta có thể bắt đầu viết hàm để<br />

hiển thị dữ liệu ra led. Đầu tiên ta sẽ viết một macro SPI_transmit với đối số sẽ là<br />

giá trị byte sẽ được truyền nối tiếp ra ngoài.<br />

SPI_TRANSMIT MACRO TEMP_DATA<br />

;Has data been received (transmit complete)?<br />

BTFSS SSPSTAT, BF<br />

GOTO $-2 ;No<br />

MOVF TEMP_DATA, W ;W reg = contents of TXDATA<br />

MOVWF SSPBUF<br />

ENDM<br />

Bước 8: Tiếp theo là làm sao lấy dữ liệu từ các buffer để đưa <strong>và</strong>o các biến<br />

tương ứng xuất ra led. Ta viết thêm một Macro nữa gồm 2 đối số là buffer <strong>và</strong><br />

temp_data. Macro này sẽ làm nhiệm vụ là lấy dữ liệu tại vị trí (được lưu trong biến<br />

index_of_buffer) của buffer lưu <strong>và</strong>o temp_data.<br />

UPDATE_DATA MACRO BUFFER,TEMP_DATA<br />

MOVLW HIGH BUFFER<br />

MOVWF FSR0H<br />

MOVLW LOW BUFFER<br />

MOVWF FSR0L<br />

MOVFF INDEX_OF_BUFFER,W<br />

ADDWF FSR0L,F<br />

CLRF W<br />

ADDWFC FSR0H<br />

MOVFF INDF0,TEMP_DATA<br />

ENDM<br />

Bước 9: Như trên đã giới thiệu để xuất dữ liệu ra led, ngoài việc dùng<br />

module SPI để xuất dữ liệu ta cần phải có thêm một tín hiệu clock tác động lên<br />

IC74595 thì dữ liệu nối tiếp của ta mới chuyển qua song song <strong>và</strong> hiển thị ra led.<br />

Do đó ta phải viết thêm một hàm tạo clock trên chân đã define khi nãy là<br />

Latch_data.<br />

CLOCK_STORAGE<br />

BSF LATCH_DATA<br />

NOP<br />

NOP<br />

BCF LATCH_DATA<br />

NOP<br />

NOP<br />

Bộ môn <strong>Kỹ</strong> Thuật <strong>Máy</strong> Tính 64 Thực hành Vi xử lý

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!