Mercurial > public > mk2
view code_part1/OSTC_code_asm_part1/dump_screen.asm @ 330:447390289f47 ScreenDump
NEW screen_dump serial command (l)
author | JeanDo |
---|---|
date | Tue, 10 May 2011 03:18:20 +0200 |
parents | |
children | 469f4861c7c1 |
line wrap: on
line source
;============================================================================= ; ; File dump_screen.asm ; ; Dump screen contains to the serial interface. ; ; This program is free software: you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation, either version 3 of the License, or ; (at your option) any later version. ; ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License ; along with this program. If not, see <http://www.gnu.org/licenses/>. ; ; Copyright (c) 2011, JD Gascuel. ;============================================================================= ; HISTORY ; 2011-05-08 : [jDG] Creation. ; ; BUGS : ; * ... ;============================================================================= ; Manage interface to the OSTC platform: dump_screen: bcf uart_dump_screen ; clear flag! movlw 'l' movwf TXREG ; Send command echo. bsf no_sensor_int ; No Sensor Interrupt bcf PIE1,RCIE ; no interrupt for UART bcf PIR1,RCIF ; clear flag bsf LED_blue ; LEDusb ON call rs232_wait_tx ; wait for UART call dump_screen_0 bcf no_sensor_int ; Restore Sensor Interrupt bcf LED_blue ; Clear led bcf LED_red ; Clear led bsf PIE1,RCIE ; Interrupt for RS232 return ;============================================================================= ; Dump screen contains to the UART dump_screen_0: ;---- Send OLED box command for the full screen window ------------------- mullw 0 ; PRODH:L <- 0 AA_CMD_WRITE 0x35 ; VerticalStartAddress HIGH:LOW AA_DATA_WRITE_PROD ; 00:00 AA_CMD_WRITE 0x36 ; VerticalEndAddress HIGH:LOW AA_DATA_WRITE 0x01 AA_DATA_WRITE 0x3F AA_CMD_WRITE 0x37 ; HorizontalAddress START:END AA_DATA_WRITE 0x00 AA_DATA_WRITE 0xEF AA_CMD_WRITE 0x20 ; Start Address Horizontal (.0 - .239) AA_DATA_WRITE_PROD ; 00:00 AA_CMD_WRITE 0x21 ; Start Address Vertical (.0 - .319) AA_DATA_WRITE_PROD ; 00:00 AA_CMD_WRITE 0x22 ; Start reading. rcall PLED_DataRead ; Dummy pixel to skip. rcall PLED_DataRead ; Dummy pixel to skip. movlw .160 ; 160x2 columns movwf PRODH dump_screen_1: btg LED_red ; LEDactivity toggle movlw .240 ; 240 lines movwf PRODL dump_screen_2: setf TRISD ; PortD as input. rcall PLED_DataRead ; read first pixel-low byte movwf TXREG ; send call rs232_wait_tx ; wait for UART rcall PLED_DataRead ; read first pixel-high byte movwf TXREG ; send call rs232_wait_tx ; wait for UART rcall PLED_DataRead ; read second pixel-low byte movwf TXREG ; send call rs232_wait_tx ; wait for UART rcall PLED_DataRead ; read second pixel-high byte movwf TXREG ; send call rs232_wait_tx ; wait for UART clrf TRISD ; Back to normal (PortD as output) decfsz PRODL,F bra dump_screen_2 AA_CMD_WRITE 0x22 ; Sync high/low byte, again. decfsz PRODH,F bra dump_screen_1 AA_CMD_WRITE 0x00 ; NOP, to stop Address Update Counter return