CCS PCM C Compiler, Version 3.214, 26536 09-2-06 22:41 Filename: VRAM.LST ROM used: 332 words (8%) Largest free fragment is 2048 RAM used: 13 (7%) at main() level 15 (8%) worst case Stack: 2 locations * 0000: MOVLW 00 0001: MOVWF 0A 0002: GOTO 0E1 0003: NOP .................... /************************************************/ .................... /* FILE :Max II VRAM.c */ .................... /* DATE :2005/02/08 */ .................... /* DESCRIPTION :Main Program */ .................... /* CPU TYPE :16F873 */ .................... /* : */ .................... /************************************************/ .................... #include <16f873.h> .................... //////// Standard Header file for the PIC16F873 device //////////////// .................... #device PIC16F873 .................... #list .................... .................... #fuses HS,NOWDT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOCPD,NOWRT .................... #use delay(CLOCK=20000000) 0004: MOVLW 2E 0005: MOVWF 04 0006: MOVF 00,W 0007: BTFSC 03.2 0008: GOTO 016 0009: MOVLW 06 000A: MOVWF 21 000B: CLRF 20 000C: DECFSZ 20,F 000D: GOTO 00C 000E: DECFSZ 21,F 000F: GOTO 00B 0010: MOVLW 7B 0011: MOVWF 20 0012: DECFSZ 20,F 0013: GOTO 012 0014: DECFSZ 00,F 0015: GOTO 009 0016: RETLW 00 .................... #use rs232(BAUD=38400,XMIT=PIN_C6,RCV=PIN_C7) .................... #use fast_io(A) .................... #use fast_io(B) .................... #use fast_io(C) .................... .................... /// 変数宣言 .................... int32 i; .................... int8 RxD,R,G,B; .................... .................... //;***** PIC16F873SP Package Pin Assign ******************************** .................... //; +---u---+ .................... //;/MCLR --|01 28|-- --- PortA RA0: .................... //; --|02 27|-- --- RA1: .................... //; --|03 26|-- --- RA2: .................... //; -|04 25|-- --- RA3: --- .................... //; --- --|05 24|-- --- RA4: --- .................... //; --- --|06 23|-- --- RA5: --- .................... //; --- --|07 22|-- A1 PortB RB0: A0 .................... //; VSS --|08 21|-- A0 RB1: A1 .................... //;CK20M --|09 20|-- VDD RB2: --- .................... //; --|10 19|-- VSS RB3: --- .................... //; CS --|11 18|-- RXD RB4: --- .................... //; DRDY --|12 17|-- TXD RB5: --- .................... //; DSYNC--|13 16|-- SDO RB6: --- .................... //; SCLK --|14 15|-- SDI RB7: --- .................... //; +-------+ PortC RC0: CS .................... //; RC1: DRDY .................... //; RC2: DSYNC .................... //; RC3: SCLK .................... //; RC4: SDI .................... //; RC5: SDO .................... //; RC6: RS-232c_TxD .................... //; RC7: RS-232c_RxD .................... .................... /// ポートの設定 .................... /****************************************/ .................... /* PORTA o, o, o, o, o, o, o, o .................... /* ---,---,RA5,RA4,RA3,RA2,RA1,RA0 .................... /* PORTB i, i, i, i, i, i, i, i, .................... /* RB7,RB6,RB5,RB4,RB3,RB2,RB1,RB0 .................... /* PORTC i, o, i, i, i, i, i, o .................... /* rxd,txd,sdo,sdi,sck,RC2,RC1,RC0 .................... /****************************************/ .................... void iniMM() .................... { output_low(PIN_A1); 0017: BCF 05.1 .................... output_low(PIN_A2); 0018: BCF 05.2 .................... delay_us(5); 0019: MOVLW 08 001A: MOVWF 20 001B: DECFSZ 20,F 001C: GOTO 01B .................... output_low(PIN_A5); 001D: BCF 05.5 .................... delay_us(5); 001E: MOVLW 08 001F: MOVWF 20 0020: DECFSZ 20,F 0021: GOTO 020 .................... output_high(PIN_A5); 0022: BSF 05.5 .................... delay_us(5); 0023: MOVLW 08 0024: MOVWF 20 0025: DECFSZ 20,F 0026: GOTO 025 .................... set_tris_b(0x00); 0027: MOVLW 00 0028: BSF 03.5 0029: MOVWF 06 .................... } 002A: BCF 03.5 002B: RETLW 00 .................... .................... void stb() .................... { delay_us(5); 002C: MOVLW 08 002D: MOVWF 20 002E: DECFSZ 20,F 002F: GOTO 02E .................... output_low(PIN_A0); 0030: BCF 05.0 .................... delay_us(2); 0031: MOVLW 03 0032: MOVWF 20 0033: DECFSZ 20,F 0034: GOTO 033 .................... output_high(PIN_A0); 0035: BSF 05.0 .................... output_low(PIN_A3); 0036: BCF 05.3 .................... delay_us(2); 0037: MOVLW 03 0038: MOVWF 20 0039: DECFSZ 20,F 003A: GOTO 039 .................... output_high(PIN_A3); 003B: BSF 05.3 .................... } 003C: RETLW 00 .................... .................... void closeMM() .................... { set_tris_b(0xFF); 003D: MOVLW FF 003E: BSF 03.5 003F: MOVWF 06 .................... delay_us(1); 0040: NOP 0041: NOP 0042: NOP 0043: NOP 0044: NOP .................... output_high(PIN_A1); 0045: BCF 03.5 0046: BSF 05.1 .................... delay_us(1); 0047: NOP 0048: NOP 0049: NOP 004A: NOP 004B: NOP .................... output_high(PIN_A2); 004C: BSF 05.2 .................... } 004D: RETLW 00 .................... .................... void ScreenInitialize() .................... { R=0xFF; G=0x00; B=0x00; iniMM(); 004E: MOVLW FF 004F: MOVWF 2A 0050: CLRF 2B 0051: CLRF 2C 0052: CALL 017 .................... for (i=0; i<30000; i++) /* 400*600/8=30000 */ 0053: CLRF 28 0054: CLRF 27 0055: CLRF 26 0056: CLRF 25 0057: MOVF 28,F 0058: BTFSS 03.2 0059: GOTO 079 005A: MOVF 27,F 005B: BTFSS 03.2 005C: GOTO 079 005D: MOVF 26,W 005E: SUBLW 75 005F: BTFSS 03.0 0060: GOTO 079 0061: BTFSS 03.2 0062: GOTO 067 0063: MOVF 25,W 0064: SUBLW 2F 0065: BTFSS 03.0 0066: GOTO 079 .................... { output_b(R); stb(); output_b(G); stb(); output_b(B); stb(); } 0067: MOVF 2A,W 0068: MOVWF 06 0069: CALL 02C 006A: MOVF 2B,W 006B: MOVWF 06 006C: CALL 02C 006D: MOVF 2C,W 006E: MOVWF 06 006F: CALL 02C 0070: MOVLW 01 0071: ADDWF 25,F 0072: BTFSC 03.0 0073: INCF 26,F 0074: BTFSC 03.2 0075: INCF 27,F 0076: BTFSC 03.2 0077: INCF 28,F 0078: GOTO 057 .................... closeMM(); delay_ms(3000); /* 3秒wait */ 0079: CALL 03D 007A: MOVLW 0C 007B: MOVWF 2D 007C: MOVLW FA 007D: MOVWF 2E 007E: CALL 004 007F: DECFSZ 2D,F 0080: GOTO 07C .................... R=0x00; G=0xFF; B=0x00; iniMM(); 0081: CLRF 2A 0082: MOVLW FF 0083: MOVWF 2B 0084: CLRF 2C 0085: CALL 017 .................... for (i=0; i<30000; i++) /* 400*600/8=30000 */ 0086: CLRF 28 0087: CLRF 27 0088: CLRF 26 0089: CLRF 25 008A: MOVF 28,F 008B: BTFSS 03.2 008C: GOTO 0AC 008D: MOVF 27,F 008E: BTFSS 03.2 008F: GOTO 0AC 0090: MOVF 26,W 0091: SUBLW 75 0092: BTFSS 03.0 0093: GOTO 0AC 0094: BTFSS 03.2 0095: GOTO 09A 0096: MOVF 25,W 0097: SUBLW 2F 0098: BTFSS 03.0 0099: GOTO 0AC .................... { output_b(R); stb(); output_b(G); stb(); output_b(B); stb(); } 009A: MOVF 2A,W 009B: MOVWF 06 009C: CALL 02C 009D: MOVF 2B,W 009E: MOVWF 06 009F: CALL 02C 00A0: MOVF 2C,W 00A1: MOVWF 06 00A2: CALL 02C 00A3: MOVLW 01 00A4: ADDWF 25,F 00A5: BTFSC 03.0 00A6: INCF 26,F 00A7: BTFSC 03.2 00A8: INCF 27,F 00A9: BTFSC 03.2 00AA: INCF 28,F 00AB: GOTO 08A .................... closeMM(); delay_ms(3000); /* 3秒wait */ 00AC: CALL 03D 00AD: MOVLW 0C 00AE: MOVWF 2D 00AF: MOVLW FA 00B0: MOVWF 2E 00B1: CALL 004 00B2: DECFSZ 2D,F 00B3: GOTO 0AF .................... R=0x00; G=0x00; B=0xFF; iniMM(); 00B4: CLRF 2A 00B5: CLRF 2B 00B6: MOVLW FF 00B7: MOVWF 2C 00B8: CALL 017 .................... for (i=0; i<30000; i++) /* 400*600/8=30000 */ 00B9: CLRF 28 00BA: CLRF 27 00BB: CLRF 26 00BC: CLRF 25 00BD: MOVF 28,F 00BE: BTFSS 03.2 00BF: GOTO 0DF 00C0: MOVF 27,F 00C1: BTFSS 03.2 00C2: GOTO 0DF 00C3: MOVF 26,W 00C4: SUBLW 75 00C5: BTFSS 03.0 00C6: GOTO 0DF 00C7: BTFSS 03.2 00C8: GOTO 0CD 00C9: MOVF 25,W 00CA: SUBLW 2F 00CB: BTFSS 03.0 00CC: GOTO 0DF .................... { output_b(R); stb(); output_b(G); stb(); output_b(B); stb(); } 00CD: MOVF 2A,W 00CE: MOVWF 06 00CF: CALL 02C 00D0: MOVF 2B,W 00D1: MOVWF 06 00D2: CALL 02C 00D3: MOVF 2C,W 00D4: MOVWF 06 00D5: CALL 02C 00D6: MOVLW 01 00D7: ADDWF 25,F 00D8: BTFSC 03.0 00D9: INCF 26,F 00DA: BTFSC 03.2 00DB: INCF 27,F 00DC: BTFSC 03.2 00DD: INCF 28,F 00DE: GOTO 0BD .................... closeMM(); 00DF: CALL 03D .................... } 00E0: RETLW 00 .................... .................... /// メイン関数 .................... void main () .................... { port_b_pullups(FALSE); 00E1: CLRF 04 00E2: MOVLW 1F 00E3: ANDWF 03,F 00E4: BSF 03.5 00E5: BSF 1F.0 00E6: BSF 1F.1 00E7: BSF 1F.2 00E8: BCF 1F.3 00E9: MOVLW 20 00EA: MOVWF 19 00EB: MOVLW 26 00EC: MOVWF 18 00ED: MOVLW 90 00EE: BCF 03.5 00EF: MOVWF 18 00F0: BSF 03.5 00F1: BSF 01.7 .................... output_a(0x3F); set_tris_a(0x00); 00F2: MOVLW 3F 00F3: BCF 03.5 00F4: MOVWF 05 00F5: MOVLW 00 00F6: BSF 03.5 00F7: MOVWF 05 .................... set_tris_b(0xFF); 00F8: MOVLW FF 00F9: MOVWF 06 .................... output_c(0x00); set_tris_c(0xBE); /* RESET=L */ 00FA: BCF 03.5 00FB: CLRF 07 00FC: MOVLW BE 00FD: BSF 03.5 00FE: MOVWF 07 .................... ////割込み許可 .................... disable_interrupts(INT_RDA); //USART 受信割込み許可 00FF: BCF 0C.5 .................... disable_interrupts(GLOBAL); //割込み許可 0100: BCF 03.5 0101: BCF 0B.6 0102: BCF 0B.7 0103: BTFSC 0B.7 0104: GOTO 102 .................... delay_ms(100); 0105: MOVLW 64 0106: MOVWF 2E 0107: CALL 004 .................... output_high(PIN_C0); /* RESET=H */ 0108: BSF 07.0 .................... ScreenInitialize(); /* printf("Ready"); */ 0109: CALL 04E .................... L1: RxD=getc(); 010A: BTFSS 0C.5 010B: GOTO 10A 010C: MOVF 1A,W 010D: MOVWF 29 .................... switch(RxD) .................... { case 0x00: ScreenInitialize(); 010E: MOVF 29,W 010F: XORLW 00 0110: BTFSC 03.2 0111: GOTO 116 0112: XORLW 01 0113: BTFSC 03.2 0114: GOTO 118 0115: GOTO 14A 0116: CALL 04E .................... break; 0117: GOTO 14A .................... case 0x01: iniMM(); 0118: CALL 017 .................... for (i=0; i<30000; i++) 0119: CLRF 28 011A: CLRF 27 011B: CLRF 26 011C: CLRF 25 011D: MOVF 28,F 011E: BTFSS 03.2 011F: GOTO 148 0120: MOVF 27,F 0121: BTFSS 03.2 0122: GOTO 148 0123: MOVF 26,W 0124: SUBLW 75 0125: BTFSS 03.0 0126: GOTO 148 0127: BTFSS 03.2 0128: GOTO 12D 0129: MOVF 25,W 012A: SUBLW 2F 012B: BTFSS 03.0 012C: GOTO 148 .................... { RxD=getc(); output_b(RxD); stb(); RxD=getc(); output_b(RxD); stb(); RxD=getc(); output_b(RxD); stb(); } 012D: BTFSS 0C.5 012E: GOTO 12D 012F: MOVF 1A,W 0130: MOVWF 29 0131: MOVWF 06 0132: CALL 02C 0133: BTFSS 0C.5 0134: GOTO 133 0135: MOVF 1A,W 0136: MOVWF 29 0137: MOVWF 06 0138: CALL 02C 0139: BTFSS 0C.5 013A: GOTO 139 013B: MOVF 1A,W 013C: MOVWF 29 013D: MOVWF 06 013E: CALL 02C 013F: MOVLW 01 0140: ADDWF 25,F 0141: BTFSC 03.0 0142: INCF 26,F 0143: BTFSC 03.2 0144: INCF 27,F 0145: BTFSC 03.2 0146: INCF 28,F 0147: GOTO 11D .................... closeMM(); 0148: CALL 03D .................... break; 0149: GOTO 14A .................... } .................... goto L1; 014A: GOTO 10A .................... } .................... 014B: SLEEP Configuration Fuses: Word 1: 3F3A HS NOWDT NOPUT NOPROTECT NOBROWNOUT NOLVP NOCPD NOWRT NODEBUG