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

📄 control.lst

📁 VGA视频切换矩阵源玛,采用PIC单片机16F628实现8*8的视频切换.
💻 LST
📖 第 1 页 / 共 3 页
字号:
MPASM  4.02 Released                              CONTROL.ASM   5-11-2006  20:48:14         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00001 
                      00002 ;操作说明:上电后,默认的4个输出通道输出的都是1号输入信号
                      00003 ;不停的按动信号选择键,则相应的输出通道输出1号输入信号→2号输入信号→3号输入信号→4号输入信号→1号输入信
                      00004 ;*******************************************************************************
                      00005 ;************************** 4路输入/输出型VGA切换程序 **************************
                      00006 ;*******************************************************************************
                      00007 #INCLUDE "P16F628.INC"
                      00001         LIST
                      00002 ; P16F628.INC  Standard Header File, Version 1.01    Microchip Technology, Inc.
                      00261         LIST
  00000086            00008 IN_OUT_DDR      EQU                     TRISB                           
  00000006            00009 IN_OUT_PORT     EQU                     PORTB   
  00000000            00010 RB0                     EQU                     0H
  00000001            00011 RB1                     EQU                     1H
  00000002            00012 RB2                     EQU                     2H
  00000003            00013 RB3                     EQU                     3H
  00000004            00014 RB4                     EQU                     4H
  00000005            00015 RB5                     EQU                     5H
  00000006            00016 RB6                     EQU                     6H
  00000007            00017 RB7                     EQU                     7H      
  00000000            00018 RA0                     EQU                     0H
  00000001            00019 RA1                     EQU                     1H
  00000002            00020 RA2                     EQU                     2H
  00000003            00021 RA3                     EQU                     3H
  00000004            00022 RA4                     EQU                     4H
  00000005            00023 RA5                     EQU                     5H
  00000006            00024 RA6                     EQU                     6H
  00000007            00025 RA7                     EQU                     7H                      
                      00026 ;定义按键脚
  00000007            00027 KEY0            EQU                     RB7                             
  00000006            00028 KEY1            EQU                     RB6                             
  00000005            00029 KEY2            EQU                     RB5                             
  00000004            00030 KEY3            EQU                     RB4                             
                      00031 ;******************************************************************************
                      00032 ;定义信号输入/输出控制脚
  00000002            00033 IN_SEL0         EQU                     RB2                             
  00000003            00034 IN_SEL1         EQU                     RB3                             
  00000000            00035 OUT_SEL0        EQU                     RB0                             
  00000001            00036 OUT_SEL1        EQU                     RB1                             
                      00037 ;******************************************************************************
  00000085            00038 CONTROL_DDR     EQU                     TRISA                           
  00000005            00039 CONTROL_PORT    EQU             PORTA                           
                      00040 ;定义数据锁存/写入脚
  00000001            00041 LATCH           EQU                     RA1                             
  00000000            00042 WRITE           EQU                     RA0                             
                      00043 ;******************************************************************************
                      00044 ;定义按键去抖动延迟时间
  00000030            00045 TIMER15S1       EQU                     30H
  00000031            00046 TIMER15S2       EQU                     31H
  00000032            00047 TIMER15S3       EQU                     32H
  00000033            00048 TIMER15S4       EQU                     33H
                      00049 ;******************************************************************************
MPASM  4.02 Released                              CONTROL.ASM   5-11-2006  20:48:14         PAGE  2


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00050 ;定义各按键轮流次序寄存器
  00000034            00051 out_reg0        EQU                     34H
  00000035            00052 out_reg1        EQU                     35H
  00000036            00053 out_reg2        EQU                     36H
  00000037            00054 out_reg3        EQU                     37H
                      00055 ;******************************************************************************
                      00056 ;定义要操作的输入/输出通道号
  00000038            00057 in_numble       EQU                     38H
  00000039            00058 out_numble      EQU                     39H
                      00059 ;******************************************************************************
                      00060 
0000                  00061                 ORG             0H              ;复位入口
0000   2877           00062                 GOTO            MAIN
                      00063 ;******************************************************************************
                      00064 ;中断子程序
                      00065 ;65ms中断,里面设置了4个以65ms为单位的按键去抖动时间
                      00066 ;******************************************************************************
0004                  00067                 ORG             4H              ;中断入口
0004   1D0B           00068                 BTFSS           INTCON,T0IF     ;
0005   0009           00069                 RETFIE                          ;
0006   110B           00070                 BCF             INTCON,T0IF     ;
0007   0AB0           00071                 INCF            TIMER15S1,F     ;       
0008   0AB1           00072                 INCF            TIMER15S2,F     ;       
0009   0AB2           00073                 INCF            TIMER15S3,F     ;       
000A   0AB3           00074                 INCF            TIMER15S4,F     ;       
000B   0009           00075                 RETFIE
                      00076 ;******************************************************************************
                      00077 ;操作子程序
                      00078 ;入口in_numble:选择的输入信号通道号,从0到3代表1到4号输入通道号。
                      00079 ;入口out_numble:选择从哪个通道输出,从0到3代表1到4号输出通道号。
                      00080 ;出口:无
                      00081 ;******************************************************************************
000C                  00082 SEL_INX_OUTY:
000C   0064           00083                 CLRWDT                          ;
000D                  00084 CHECK_IN0:
000D   3000           00085                 MOVLW           0H              ;
000E   0638           00086                 XORWF           in_numble,W     ;检测是否选择了1号输入通道
000F   1D03           00087                 BTFSS           STATUS,Z        ;
0010   2814           00088                 GOTO            CHECK_IN1
0011   1106           00089                 BCF             IN_OUT_PORT,IN_SEL0
0012   1186           00090                 BCF             IN_OUT_PORT,IN_SEL1
0013   2829           00091                 GOTO            CHECK_OUT0      ;
0014                  00092 CHECK_IN1:
0014   3001           00093                 MOVLW           1H              ;
0015   0638           00094                 XORWF           in_numble,W     ;检测是否选择了2号输入通道
0016   1D03           00095                 BTFSS           STATUS,Z        ;
0017   281B           00096                 GOTO            CHECK_IN2
0018   1506           00097                 BSF             IN_OUT_PORT,IN_SEL0
0019   1186           00098                 BCF             IN_OUT_PORT,IN_SEL1
001A   2829           00099                 GOTO            CHECK_OUT0      ;
001B                  00100 CHECK_IN2:
001B   3002           00101                 MOVLW           2H              ;
001C   0638           00102                 XORWF           in_numble,W     ;检测是否选择了3号输入通道
MPASM  4.02 Released                              CONTROL.ASM   5-11-2006  20:48:14         PAGE  3


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

001D   1D03           00103                 BTFSS           STATUS,Z        ;
001E   2822           00104                 GOTO            CHECK_IN3
001F   1106           00105                 BCF             IN_OUT_PORT,IN_SEL0
0020   1586           00106                 BSF             IN_OUT_PORT,IN_SEL1
0021   2829           00107                 GOTO            CHECK_OUT0      ;
0022                  00108 CHECK_IN3:
0022   3003           00109                 MOVLW           3H              ;
0023   0638           00110                 XORWF           in_numble,W     ;检测是否选择了4号输入通道
0024   1D03           00111                 BTFSS           STATUS,Z        ;
0025   0008           00112                 RETURN                          ;
0026   1506           00113                 BSF             IN_OUT_PORT,IN_SEL0
0027   1586           00114                 BSF             IN_OUT_PORT,IN_SEL1
0028   2829           00115                 GOTO            CHECK_OUT0      ;
0029                  00116 CHECK_OUT0:
0029   3000           00117                 MOVLW           0H              ;
002A   0639           00118                 XORWF           out_numble,W    ;检测是否选择了1号输出通道
002B   1D03           00119                 BTFSS           STATUS,Z        ;
002C   2830           00120                 GOTO            CHECK_OUT1      ;
002D   1006           00121                 BCF             IN_OUT_PORT,OUT_SEL0    
002E   1086           00122                 BCF             IN_OUT_PORT,OUT_SEL1
002F   2845           00123                 GOTO            SEND_DATA       ;
0030                  00124 CHECK_OUT1:
0030   3001           00125                 MOVLW           1H              ;
0031   0639           00126                 XORWF           out_numble,W    ;检测是否选择了2号输出通道
0032   1D03           00127                 BTFSS           STATUS,Z        ;
0033   2837           00128                 GOTO            CHECK_OUT2      ;
0034   1406           00129                 BSF             IN_OUT_PORT,OUT_SEL0    
0035   1086           00130                 BCF             IN_OUT_PORT,OUT_SEL1
0036   2845           00131                 GOTO            SEND_DATA       ;
0037                  00132 CHECK_OUT2:
0037   3002           00133                 MOVLW           2H              ;
0038   0639           00134                 XORWF           out_numble,W    ;检测是否选择了3号输出通道
0039   1D03           00135                 BTFSS           STATUS,Z        ;
003A   283E           00136                 GOTO            CHECK_OUT3      ;
003B   1006           00137                 BCF             IN_OUT_PORT,OUT_SEL0    
003C   1486           00138                 BSF             IN_OUT_PORT,OUT_SEL1
003D   2845           00139                 GOTO            SEND_DATA       ;
003E                  00140 CHECK_OUT3:
003E   3003           00141                 MOVLW           3H              ;
003F   0639           00142                 XORWF           out_numble,W    ;检测是否选择了4号输出通道
0040   1D03           00143                 BTFSS           STATUS,Z        ;
0041   0008           00144                 RETURN                          ;
0042   1406           00145                 BSF             IN_OUT_PORT,OUT_SEL0    
0043   1486           00146                 BSF             IN_OUT_PORT,OUT_SEL1
0044   2845           00147                 GOTO            SEND_DATA       ;
0045                  00148 SEND_DATA:                                      ;写入数据
0045   1005           00149                 BCF             CONTROL_PORT,WRITE      
0046   0000           00150                 NOP
0047   0000           00151                 NOP
0048   1405           00152                 BSF             CONTROL_PORT,WRITE      
0049   0000           00153                 NOP
004A   0000           00154                 NOP
004B   1005           00155                 BCF             CONTROL_PORT,WRITE
MPASM  4.02 Released                              CONTROL.ASM   5-11-2006  20:48:14         PAGE  4


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

004C   0000           00156                 NOP
004D   0000           00157                 NOP
                      00158                                                 ;锁存数据
004E   1085           00159                 BCF             CONTROL_PORT,LATCH
004F   0000           00160                 NOP
0050   0000           00161                 NOP
0051   1485           00162                 BSF             CONTROL_PORT,LATCH
0052   0000           00163                 NOP
0053   0000           00164                 NOP
0054   1085           00165                 BCF             CONTROL_PORT,LATCH
0055   0000           00166                 NOP
0056   0000           00167                 NOP
0057   0008           00168                 RETURN  
                      00169 ;******************************************************************************
                      00170 ;初始化子程序
                      00171 ;入口:无
                      00172 ;出口:无
                      00173 ;功能:初始化IO,并让所有的输出通道选择1号输入信号
                      00174 ;******************************************************************************
0058                  00175 INIT_PORT:
0058   1683           00176                 BSF                     STATUS,RP0      ;
0059   3007           00177                 MOVLW           7H
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
005A   0081           00178                 MOVWF           OPTION_REG      ;使能RB口的弱上拉功能,并使定时器0有1:256的前分频器
005B   30FC           00179                 MOVLW           0FCH
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
005C   0085           00180                 MOVWF           CONTROL_DDR     ;设置LATCH/WRITE为输出,其余为输入
005D   30F0           00181                 MOVLW           0F0H
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
005E   0086           00182                 MOVWF           IN_OUT_DDR      ;设置KEY0-KEY3为输入,其余为输出
                      00183 
005F   1283           00184                 BCF                     STATUS,RP0      ;
0060   0185           00185                 CLRF            CONTROL_PORT
0061   0186           00186                 CLRF            IN_OUT_PORT     ;       
                      00187                 
0062   3000           00188                 MOVLW           0H
0063   00B8           00189                 MOVWF           in_numble       ;

⌨️ 快捷键说明

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