⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gepe456.sdi

📁 该应用软件可以实现大多数单片机的仿真实验
💻 SDI
📖 第 1 页 / 共 5 页
字号:
029C,008D,,          MOVWF EEADR
029D,1303,,          BCF STATUS,RP1
029E,3003,,          MOVLW 3           ;
029F,00A1,,          MOVWF LOOPC
,,,
02A0,3014,,          MOVLW H'14'       ; CG RAM start address $1400 + 128
02A1,00A8,,          MOVWF ADRMSB      ; (character code $90)
02A2,3080,,          MOVLW 128         ;
02A3,00A7,,          MOVWF ADRLSB      ;
02A4,2432,,          CALL SCREENADR    ; set screen write address
02A5,30B0,,          MOVLW AWRON       ; AUTO WRITE ON
02A6,2514,,          CALL SENDCMD      ; send command
,,,
02A7,255D,BK2,BK2       CALL PRMGET       ; get BIRD beak details from EEPROM
02A8,2426,,          CALL AUTOWRITE    ; auto write beak as character $90
02A9,0A8D,,          INCF EEADR,F      ; just 3 lines of eeprom taken as $90
02AA,0BA1,,          DECFSZ LOOPC,F    ; is assumed to have been cleared earlier
02AB,2AA7,,          GOTO BK2
02AC,30B2,,          MOVLW AWROFF      ; AUTO WRITE OFF
02AD,2514,,          CALL SENDCMD      ; send command
,,,
02AE,3033,,          MOVLW 51          ; start line for water
02AF,00A3,,          MOVWF LOOPE
02B0,300C,,          MOVLW 12          ; number of lines to be filled
02B1,00A2,,          MOVWF LOOPD
,,,
02B2,3000,WATER,WATER     MOVLW 0           ; draw "WATER"
02B3,00A7,,          MOVWF ADRLSB      ; set column
02B4,0823,,          MOVF LOOPE,W      ; set line
02B5,254F,,          CALL GLINE        ; multiply by line length
02B6,3010,,          MOVLW 16          ; character quantity
02B7,00A1,,          MOVWF LOOPC
02B8,30AA,,          MOVLW B'10101010' ; "WATER" pattern - try changing this value
02B9,00A9,,          MOVWF ATTRIB
02BA,24BF,,          CALL SETATTR
02BB,0AA3,,          INCF LOOPE,F
02BC,0BA2,,          DECFSZ LOOPD,F
02BD,2AB2,,          GOTO WATER
,,,
02BE,301C,,          MOVLW 28
02BF,00A3,,          MOVWF LOOPE
02C0,3034,,          MOVLW JOIN00      ; clear JOIN variables
02C1,0084,,          MOVWF FSR
02C2,0180,CLRJOIN,CLRJOIN   CLRF INDF         ;JKJ: removed ',F'
02C3,0A84,,          INCF FSR,F
02C4,0BA3,,          DECFSZ LOOPE,F
02C5,2AC2,,          GOTO CLRJOIN
02C6,3006,,          MOVLW 6
02C7,00AE,,          MOVWF QCKCOL      ; set quack bill column
02C8,3001,,          MOVLW 1           ; loop period before next quack
02C9,00AC,,          MOVWF COUNT
,,,
02CA,3017,BIRDZ,BIRDZ     MOVLW 23          ; set start line for shift right of display
02CB,00A3,,          MOVWF LOOPE
02CC,01A7,,          CLRF ADRLSB       ; set column
02CD,0823,,          MOVF LOOPE,W      ; set line
02CE,254F,,          CALL GLINE        ; multiply by line length
02CF,2432,,          CALL SCREENADR    ; set screen write address
02D0,3034,,          MOVLW JOIN00      ; set join variable for right-hand line bit
02D1,0084,,          MOVWF FSR
,,,
02D2,3010,BIRDY,BIRDY     MOVLW 16          ;
02D3,00A2,,          MOVWF LOOPD       ; set loop val (number of columns to be shifted)
,,,
02D4,251F,BIRDY2,BIRDY2    CALL DATAREAD     ; read screen, returns with val held in RDBYTE
02D5,0D80,,          RLF INDF,F        ; rotate STORE into CARRY
02D6,0CAB,,          RRF RDBYTE,F      ; rotate RDBYTE and bring in CARRY bit
02D7,0C80,,          RRF INDF,F        ; shift CARRY into STORE
02D8,30B0,,          MOVLW AWRON       ; AUTO WRITE ON
02D9,2514,,          CALL SENDCMD      ; send command
02DA,24D5,,          CALL CHECK3       ; read status for DA0/DA1 = 3
02DB,082B,,          MOVF RDBYTE,W     ; re-store RDBYTE on screen
02DC,2505,,          CALL OUTDATA      ;
02DD,30B2,,          MOVLW AWROFF      ; AUTO WRITE OFF
02DE,2514,,          CALL SENDCMD      ; send command
02DF,0BA2,,          DECFSZ LOOPD,F
02E0,2AD4,,          GOTO BIRDY2       ; repeat until done
,,,
02E1,1E05,,          BTFSS PORTA,4     ; check switch
02E2,0008,,          RETURN
,,,
02E3,0A84,,          INCF FSR,F        ; inc JOIN store address
02E4,0AA3,,          INCF LOOPE,F      ; inc line number
02E5,0823,,          MOVF LOOPE,W
02E6,3A33,,          XORLW 51
02E7,1D03,,          BTFSS STATUS,Z    ; has line limit been reached?
02E8,2AD2,,          GOTO BIRDY        ; no, so repeat for next line
,,,
02E9,03AC,,          DECF COUNT,F      ; dec counter
02EA,1D03,,          BTFSS STATUS,Z    ; is it zero?
02EB,2ACA,,          GOTO BIRDZ        ; no, so start again
,,,
02EC,,QUACK,QUACK
02EC,01A8,,          CLRF ADRMSB       ; show beak
02ED,082E,,          MOVF QCKCOL,W     ; set column
02EE,2541,,          CALL LINE4        ; set line
02EF,3090,,          MOVLW H'90'       ; beak symbol
02F0,241C,,          CALL ONEWRITE
,,,
02F1,01A8,,          CLRF ADRMSB       ; show QUACK text
02F2,3005,,          MOVLW 5           ; set column
02F3,00A7,,          MOVWF ADRLSB
02F4,254A,,          CALL LINE1        ; set line
02F5,3005,,          MOVLW 5           ; character quantity
02F6,00A1,,          MOVWF LOOPC       ;
02F7,3030,,          MOVLW 48
02F8,00A0,,          MOVWF LOOPB       ; set table loop counter
02F9,24B2,,          CALL SHWTXT       ;
,,,
02FA,3003,,          MOVLW 3           ; short pause
02FB,00A0,,          MOVWF LOOPB
02FC,256D,QK2,QK2       CALL PAUSIT
02FD,0BA0,,          DECFSZ LOOPB,F
02FE,2AFC,,          GOTO QK2
,,,
02FF,01A8,,          CLRF ADRMSB       ; clear QUACK text
0300,3005,,          MOVLW 5           ; set column
0301,00A7,,          MOVWF ADRLSB
0302,254A,,          CALL LINE1        ; set line
0303,3005,,          MOVLW 5           ; character quantity
0304,00A1,,          MOVWF LOOPC
0305,3000,,          MOVLW 0           ; clear QUACK
0306,00A9,,          MOVWF ATTRIB
0307,24BF,,          CALL SETATTR
,,,
0308,01A8,,          CLRF ADRMSB       ; clear QUACK bill
0309,082E,,          MOVF QCKCOL,W     ; set column
030A,00A7,,          MOVWF ADRLSB
030B,2541,,          CALL LINE4        ; set line
030C,3000,,          MOVLW 0
030D,241C,,          CALL ONEWRITE
030E,0AAE,,          INCF QCKCOL,F
030F,122E,,          BCF QCKCOL,4
,,,
0310,3008,,          MOVLW 8           ; set QUACK period loop count
0311,00AC,,          MOVWF COUNT
0312,082E,,          MOVF QCKCOL,W
0313,1903,,          BTFSC STATUS,Z
0314,0AAC,,          INCF COUNT,F
0315,2ACA,,          GOTO BIRDZ
,,,
,,,                            ;******* DEMO 9 SHOW FULL ALPHANUMERIC TEXT SET ***
,,,
0316,,DEMO9,DEMO9                       ; ** WRITE FULL ASCII TEXT **
0316,3094,,          MOVLW B'10010100' ; text on, graphic off, cursor & blink off
0317,2514,,          CALL SENDCMD      ; send command
,,,
0318,01A8,,          CLRF ADRMSB       ;
0319,01A7,,          CLRF ADRLSB       ;
031A,2432,,          CALL SCREENADR    ; set screen write address
031B,30B0,,          MOVLW AWRON       ; AUTO WRITE ON
031C,2514,,          CALL SENDCMD      ; send command
031D,01A0,,          CLRF LOOPB
031E,0820,DM9,DM9       MOVF LOOPB,W      ;
031F,2426,,          CALL AUTOWRITE    ; auto write and increment
0320,0AA0,,          INCF LOOPB,F      ;
0321,1FA0,,          BTFSS LOOPB,7
0322,2B1E,,          GOTO DM9          ;
0323,30B2,,          MOVLW AWROFF      ; AUTO WRITE OFF
0324,2514,,          CALL SENDCMD      ; send command
0325,0008,,          RETURN
,,,
,,,                            ;******* DEMO 10 SHOW CHARACTER GEN SYMBOL TEXT SET ***
,,,
0326,,DEMO10,DEMO10                      ; ** FIRST COPY EEPROM INTO CG RAM **
,,,
0326,1703,,          BSF STATUS,RP1    ; set for PIC its Page 2 for EEPROM reading
0327,018D,,          CLRF EEADR
0328,1303,,          BCF STATUS,RP1
,,,
0329,3014,,          MOVLW H'14'       ; CG RAM start address $1400 + 136
032A,00A8,,          MOVWF ADRMSB      ;
032B,3088,,          MOVLW 136
032C,00A7,,          MOVWF ADRLSB      ;
032D,2432,,          CALL SCREENADR    ; set screen write address
032E,30B0,,          MOVLW AWRON       ; SET DATA AUTO WRITE ON
032F,2514,,          CALL SENDCMD      ; send command
0330,01A0,,          CLRF LOOPB        ;
0331,30E0,,          MOVLW 224
0332,00A1,,          MOVWF LOOPC
,,,
0333,0820,SETEG2,SETEG2    MOVF LOOPB,W      ; WRITE TO EXTERNAL RAM
0334,255D,,          CALL PRMGET
0335,2426,,          CALL AUTOWRITE    ; auto write and increment
0336,0AA0,,          INCF LOOPB,F      ;
0337,0BA1,,          DECFSZ LOOPC,F    ; LOOPC val specified by calling routine
0338,2B33,,          GOTO SETEG2       ;
0339,30B2,,          MOVLW AWROFF      ; AUTO WRITE OFF
033A,2514,,          CALL SENDCMD      ; send command
,,,
,,,                            ; ** WRITE FULL NON-ASCII TEXT AS HELD IN CG RAM **
033B,01A8,,          CLRF ADRMSB       ;
033C,01A7,,          CLRF ADRLSB       ;
033D,2432,,          CALL SCREENADR    ; set screen write address
033E,30B0,,          MOVLW AWRON       ; AUTO WRITE ON
033F,2514,,          CALL SENDCMD      ; send command
0340,3080,,          MOVLW 128         ; first CG RAM character $80 = 128
0341,00A0,,          MOVWF LOOPB
0342,0820,DM10,DM10      MOVF LOOPB,W      ;
0343,2426,,          CALL AUTOWRITE    ; auto write and increment
0344,0FA0,,          INCFSZ LOOPB,F    ;
0345,2B42,,          GOTO DM10         ;
0346,30B2,,          MOVLW AWROFF      ; AUTO WRITE OFF
0347,2514,,          CALL SENDCMD      ; send command
0348,0008,,          RETURN
,,,
,,,                            ;******** DEMO 11 CREATE MOVING WAVEFORM - HORIZONTAL *************
,,,
0349,246A,DEMO11,DEMO11    CALL CLRTXT
034A,309C,,          MOVLW B'10011100' ; text on, graphic on, cursor & blink off
034B,2514,,          CALL SENDCMD      ; send command
,,,
034C,01A8,,          CLRF ADRMSB       ; show EPE text PT1
034D,3001,,          MOVLW 1           ; set column
034E,00A7,,          MOVWF ADRLSB
034F,254D,,          CALL LINE0        ; set line
0350,3009,,          MOVLW 9           ; character quantity
0351,00A1,,          MOVWF LOOPC       ;
0352,3010,,          MOVLW 16          ; position in table
0353,00A0,,          MOVWF LOOPB       ; set table loop counter
0354,24B2,,          CALL SHWTXT       ;
,,,
0355,01A8,,          CLRF ADRMSB       ; set and show EPE text PT2
0356,300B,,          MOVLW 11          ; set column
0357,00A7,,          MOVWF ADRLSB
0358,254D,,          CALL LINE0        ; set line
0359,3004,,          MOVLW 4           ; character quantity
035A,00A1,,          MOVWF LOOPC       ;
035B,301E,,          MOVLW 30          ; position in table
035C,00A0,,          MOVWF LOOPB       ; set table loop counter
035D,24B2,,          CALL SHWTXT       ;
,,,
035E,3010,,          MOVLW 16          ; clear temp storage memory
035F,00A2,,          MOVWF LOOPD
0360,3034,,          MOVLW JOIN00
0361,0084,,          MOVWF FSR
0362,0180,CLRMEM,CLRMEM    CLRF INDF
0363,0A84,,          INCF FSR,F
0364,0BA2,,          DECFSZ LOOPD,F
0365,2B62,,          GOTO CLRMEM
,,,
0366,01AC,,          CLRF COUNT        ; volts simulator counter
0367,01AF,,          CLRF PEAKLO
,,,
0368,01A3,WAVE0,WAVE0     CLRF LOOPE        ; set start line
0369,01A8,WAVE1,WAVE1     CLRF ADRMSB
036A,01A7,,          CLRF ADRLSB
,,,
036B,082C,,          MOVF COUNT,W      ; copy loop val into PEAKHI
036C,00B0,,          MOVWF PEAKHI
,,,
036D,022F,,          SUBWF PEAKLO,W    ; is PEAKHI > PEAKLO ?
036E,1C03,,          BTFSS STATUS,C    ; is there a borrow?
036F,2B74,,          GOTO WAVE2        ; yes
,,,
0370,082F,,          MOVF PEAKLO,W     ; no, so swap lo & hi
0371,00B0,,          MOVWF PEAKHI
0372,082C,,          MOVF COUNT,W
0373,00AF,,          MOVWF PEAKLO
,,,
0374,082F,WAVE2,WAVE2     MOVF PEAKLO,W     ; get LO remainder less than 8
0375,20E6,,          CALL BITSLO
0376,00B1,,          MOVWF LOBIT
,,,
0377,0D2F,,          RLF PEAKLO,W      ; get LO integer (i.e. divide by 8)
0378,00B2,,          MOVWF LOOPLO
0379,0E32,,          SWAPF LOOPLO,W
037A,390F,,          ANDLW 15
037B,00B2,,          MOVWF LOOPLO
,,,
037C,0832,,          MOVF LOOPLO,W     ; set address for 1st temp store memory
037D,3E34,,          ADDLW JOIN00
037E,0084,,          MOVWF FSR
,,,
037F,1003,,          BCF STATUS,C
0380,082F,,          MOVF PEAKLO,W
0381,00A2,,          MOVWF LOOPD
,,,
0382,0822,WAVE3,WAVE3     MOVF LOOPD,W
0383,062F,,          XORWF PEAKLO,W
0384,1903,,          BTFSC STATUS,Z
0385,2B93,,          GOTO WAVE4
0386,0831,,          MOVF LOBIT,W
0387,0480,,          IORWF INDF,F
0388,0AA2,,          INCF LOOPD,F
0389,1BA2,,          BTFSC LOOPD,7
038A,2BA4,,          GOTO WAVE5
038B,1003,,          BCF STATUS,C
038C,0CB1,,          RRF LOBIT,F
038D,1C03,,          BTFSS STATUS,C
038E,2B82,,          GOTO WAVE3
038F,0A84,,          INCF FSR,F
0390,17B1,,          BSF LOBIT,7
0391,1003,,          BCF STATUS,C
0392,2B82,,          GOTO WAVE3
,,,
0393,0822,WAVE4,WAVE4     MOVF LOOPD,W
0394,0630,,          XORWF PEAKHI,W
0395,1903,,          BTFSC STATUS,Z
0396,2BA4,,          GOTO WAVE5
0397,0831,,          MOVF LOBIT,W
0398,0480,,          IORWF INDF,F
0399,0AA2,,          INCF LOOPD,F
039A,1BA2,,          BTFSC LOOPD,7
039B,2BA4,,          GOTO WAVE5

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -