📄 last.lst
字号:
MPASM 5.14 LAST.ASM 3-31-2008 13:20:52 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 ;**********************************************************
2007 3F39 00002 __CONFIG 3F39H;设置配置位中振荡方式为XT,其它全部禁止或关闭
00003 ;***********************************************************
00000003 00004 STATUS EQU 3H ;定义状态寄存器地址
00000002 00005 pcl EQU 02H ;定义程序寄存器低8位
00000005 00006 PORTA EQU 5H ;定义RA口数据寄存器地址
00000006 00007 PORTB EQU 6H ;定义RB口数据寄存器地址
00000007 00008 PORTC EQU 7H ;定义RC口数据寄存器地址
00000085 00009 TRISA EQU 85H ;定义RA口方向控制寄存器地址
00000086 00010 TRISB EQU 86H ;定义RB口方向控制寄存器地址
00000087 00011 TRISC EQU 87H ;定义RC口方向控制寄存器地址
0000009F 00012 ADCON1 EQU 9FH ;定义ADC模块控制寄存器1的地址
00000081 00013 OPTION_REG EQU 81H ;
00014 ;********************
00000002 00015 Z EQU 2 ;定义0状态位的位地址
00000005 00016 RP0 EQU 5 ;定义页选位RP0的位地址
00017 ;*********************
00000001 00018 RS EQU 1 ;LCD寄存器选择信号脚定义在RA.1脚
00000002 00019 RW EQU 2 ;LCD读/写信号脚定义在RA.2脚
00000003 00020 E EQU 3 ;LCD片选信号脚定义在RA.3脚
00000007 00021 BU EQU 7 ;LCD忙
00022 ;**************************
00000025 00023 KEYNU EQU 25H ;显示字符数
00000023 00024 ABC EQU 23H ;字符变量
00000024 00025 KEYP EQU 24H ;
00026 ;*******************************
00000000 00027 ZERO EQU 0
00000001 00028 ONE EQU 1
00000002 00029 TWO EQU 2
00000003 00030 THR EQU 3
00000004 00031 FOR EQU 4
00032 ;*******************************
0000 00033 ORG 000H
0000 0000 00034 NOP ;放置一条ICD必需的空操作指令
0001 2808 00035 GOTO MAIN
0008 00036 ORG 0008H
0008 00037 MAIN
0008 1683 00038 BSF STATUS,RP0
0009 3007 00039 MOVLW 07H
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
000A 009F 00040 MOVWF ADCON1 ;设置RA口全部为普通数字IO口
000B 3000 00041 MOVLW 00H ;定义RA口,RC口全部为输出
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
000C 0085 00042 MOVWF TRISA
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
000D 0087 00043 MOVWF TRISC
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
000E 1381 00044 BCF OPTION_REG,7
000F 30FF 00045 MOVLW 0FFH
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0010 0086 00046 MOVWF TRISB ;定义RB口为输入口
0011 1283 00047 BCF STATUS,RP0 ;进入页0进行设置
00048
MPASM 5.14 LAST.ASM 3-31-2008 13:20:52 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0012 204A 00049 call LCDSET ;初始化lcd
00050 ;显示工作画面HELLO
0013 3000 00051 MOVLW 00H
0014 00A3 00052 MOVWF ABC ;显示字符位数
0015 00053 LP1
0015 0823 00054 MOVF ABC,W
0016 206C 00055 CALL HELLO
0017 0087 00056 MOVWF PORTC ;显示一个字符
0018 2066 00057 CALL DATAEN ;WRITE DATA ENABLE
Message[305]: Using default destination of 1 (file).
0019 0AA3 00058 INCF ABC
001A 3005 00059 MOVLW 05H ;共显示5个字符
001B 0223 00060 SUBWF ABC,W
001C 1D03 00061 BTFSS STATUS,Z
001D 2815 00062 GOTO LP1 ;工作画面显示完毕
00063
001E 00064 MYKEY
001E 30FF 00065 MOVLW 0FFH
001F 00A4 00066 MOVWF KEYP
0020 2037 00067 CALL KEY ;键盘子程序
0021 08A4 00068 MOVF KEYP,F
0022 1D03 00069 BTFSS STATUS,Z
0023 281E 00070 GOTO MYKEY
00071 ;有按键按下
0024 3001 00072 MOVLW 01H
0025 0087 00073 MOVWF PORTC ;清屏
0026 2060 00074 CALL ENABLE
00075
0027 3000 00076 MOVLW 00H
0028 00A3 00077 MOVWF ABC ;显示字符位数
0029 00078 LP2
0029 0823 00079 MOVF ABC,W
002A 2072 00080 CALL PRESSED
002B 0087 00081 MOVWF PORTC ;显示一个字符
002C 2066 00082 CALL DATAEN
Message[305]: Using default destination of 1 (file).
002D 0AA3 00083 INCF ABC
002E 3009 00084 MOVLW 09H ;共显示9个字符
002F 0223 00085 SUBWF ABC,W
0030 1D03 00086 BTFSS STATUS,Z
0031 2829 00087 GOTO LP2
00088
0032 0825 00089 MOVF KEYNU,W ;把键码显示出来
0033 207C 00090 CALL TABLE2
0034 0087 00091 MOVWF PORTC ;显示一个字符
0035 2066 00092 CALL DATAEN
00093
0036 281E 00094 goto MYKEY
00095 ;------------------------------------------------------
00096 ;--------------------------KEY-------------------------
00097 ;------------------------------------------------------
0037 00098 KEY
0037 1886 00099 BTFSC PORTB,1 ;判断B1是否按下
MPASM 5.14 LAST.ASM 3-31-2008 13:20:52 PAGE 3
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0038 2840 00100 GOTO KEY2 ;没有看B2
0039 2080 00101 CALL DELAY5MS
003A 2080 00102 CALL DELAY5MS
003B 1886 00103 BTFSC PORTB,1
003C 2840 00104 GOTO KEY2
003D 01A4 00105 CLRF KEYP
003E 3001 00106 MOVLW 01H
003F 00A5 00107 MOVWF KEYNU ;把按键代码放入KEYNU中
00108
0040 00109 KEY2
0040 1906 00110 BTFSC PORTB,2
0041 2849 00111 GOTO TAIL
0042 2080 00112 CALL DELAY5MS
0043 2080 00113 CALL DELAY5MS
0044 1906 00114 BTFSC PORTB,2
0045 2849 00115 GOTO TAIL
0046 01A4 00116 CLRF KEYP
0047 3002 00117 MOVLW 02H
0048 00A5 00118 MOVWF KEYNU
0049 00119 TAIL
0049 3400 00120 RETLW 0H
00121
00122 ;-------------------------------------------------------
00123 ;-------------------下面为LCD初始化过程-----------------
00124 ;-------------------------------------------------------
004A 00125 LCDSET
004A 2080 00126 call DELAY5MS ;延时15ms,LCD上电复位可能比PIC慢
004B 2080 00127 call DELAY5MS
004C 2080 00128 call DELAY5MS
004D 3001 00129 MOVLW 01H
004E 0087 00130 MOVWF PORTC ;清屏
004F 2060 00131 CALL ENABLE
0050 3038 00132 MOVLW 38H ;显示模式:8位2行5x7点阵
0051 0087 00133 MOVWF PORTC
0052 2060 00134 CALL ENABLE
0053 3038 00135 MOVLW 38H
0054 0087 00136 MOVWF PORTC ;显示模式:8位2行5x7点阵
0055 2060 00137 CALL ENABLE
0056 300F 00138 MOVLW 0FH ;显示器开、光标开、闪烁开
0057 0087 00139 MOVWF PORTC
0058 2060 00140 CALL ENABLE
0059 3006 00141 MOVLW 06H ;读或写下个字符后光标自动右移
005A 0087 00142 MOVWF PORTC
005B 2060 00143 CALL ENABLE
005C 30C0 00144 MOVLW 0C0H ;写入显示起始地址(第一行第一个位置)
005D 0087 00145 MOVWF PORTC
005E 2060 00146 CALL ENABLE
005F 3400 00147 retlw 0h
00148 ;------------------------------------------------
00149 ;---------------写入commend使能------------------
00150 ;------------------------------------------------
0060 00151 ENABLE
0060 1085 00152 BCF PORTA,RS ;写入控制命令的子程序.RS=L
MPASM 5.14 LAST.ASM 3-31-2008 13:20:52 PAGE 4
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0061 1105 00153 BCF PORTA,RW ;RW=L
0062 1185 00154 BCF PORTA,E ;E为一高脉冲
0063 2080 00155 CALL DELAY5MS
0064 1585 00156 BSF PORTA,E
0065 3400 00157 RETLW 0
00158 ;------------------------------------------------
00159 ;---------------写入 data 使能------------------
00160 ;------------------------------------------------
0066 00161 DATAEN
0066 1485 00162 BSF PORTA,RS ;液晶模块写数字
0067 1105 00163 BCF PORTA,RW
0068 1185 00164 BCF PORTA,E
0069 2080 00165 CALL DELAY5MS
006A 1585 00166 BSF PORTA,E
006B 3400 00167 RETLW 0
00168 ;----------------------------------------------
00169 ;------------------字码表----------------------
00170 ;----------------------------------------------
006C 0782 00171 HELLO addwf pcl,f
006D 3448 3445 344C 00172 dt 48h,45h,4ch,4ch,4fh ;HELLO
344C 344F
00173
00174
0072 0782 00175 PRESSED addwf pcl,f ;pc相对寻相查表
0073 3450 3452 3445 00176 dt 50h,52h,45h,53h,53h,45h,44h,20H,20H ;pressed
3453 3453 3445
3444 3420 3420
00177
00178
007C 0782 00179 TABLE2 addwf pcl,f
007D 3430 3433 3434 00180 dt 30h,33h,34H ;0,1,2,3,4
00181
00182 ;---------------------------------------------
00183 ;延时5MS子程序
00184 ;---------------------------------------------
0080 3008 00185 DELAY5MS movlw 08h ;外循环常数
0081 00A0 00186 movwf 20h ;外循环寄存器
0082 30FF 00187 loop1 movlw 0ffh ;内循环常数
0083 00A1 00188 movwf 21h ;内循环寄存器
Message[305]: Using default destination of 1 (file).
0084 0BA1 00189 loop2 decfsz 21h ;内循环寄存器递减
0085 2884 00190 goto loop2 ;继续内循环
Message[305]: Using default destination of 1 (file).
0086 0BA0 00191 decfsz 20h ;外循环寄存器递减
0087 2882 00192 goto loop1 ;继续外循环
0088 0008 00193 return
00194 end
MPASM 5.14 LAST.ASM 3-31-2008 13:20:52 PAGE 5
SYMBOL TABLE
LABEL VALUE
ABC 00000023
ADCON1 0000009F
BU 00000007
DATAEN 00000066
DELAY5MS 00000080
E 00000003
ENABLE 00000060
FOR 00000004
HELLO 0000006C
KEY 00000037
KEY2 00000040
KEYNU 00000025
KEYP 00000024
LCDSET 0000004A
LP1 00000015
LP2 00000029
MAIN 00000008
MYKEY 0000001E
ONE 00000001
OPTION_REG 00000081
PORTA 00000005
PORTB 00000006
PORTC 00000007
PRESSED 00000072
RP0 00000005
RS 00000001
RW 00000002
STATUS 00000003
TABLE2 0000007C
TAIL 00000049
THR 00000003
TRISA 00000085
TRISB 00000086
TRISC 00000087
TWO 00000002
Z 00000002
ZERO 00000000
__16F877A 00000001
loop1 00000082
loop2 00000084
pcl 00000002
MPASM 5.14 LAST.ASM 3-31-2008 13:20:52 PAGE 6
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0000 : XX------XXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0080 : XXXXXXXXX------- ---------------- ---------------- ----------------
2000 : -------X-------- ---------------- ---------------- ----------------
All other memory blocks unused.
Program Memory Words Used: 131
Program Memory Words Free: 8061
Errors : 0
Warnings : 0 reported, 0 suppressed
Messages : 9 reported, 0 suppressed
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -