?? sloid_1.lst
字號:
A51 MACRO ASSEMBLER SLOID_1 09/16/2005 20:22:45 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN sloid_1.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE sloid_1.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0090 1 lcd_clk bit p1.0
0091 2 lcd_do bit p1.1
003C 3 lcd_buf equ 3ch ;3ch,3dh,3eh,3fh,40h分別存放顯示溫度的高-低
4
FBFF 5 tim8253co equ 0fbffh
F8FF 6 tim8253a equ 0f8ffh
F9FF 7 tim8253b equ 0f9ffh
FAFF 8 tim8253c equ 0faffh
9
0080 10 dog_so bit p0.0
0081 11 dog_si bit p0.1
0082 12 dog_sck bit p0.2
00A4 13 dog_cs bit p2.4
14
0006 15 wren equ 00000110b ;設置寫使能鎖存器(準許)
0004 16 wrdi equ 00000100b ;復位寫使能鎖存器(不準許)
0005 17 rdsr equ 00000101b ;讀狀態據存器
0001 18 wrsr1 equ 00000001b ;寫狀態據存器
19
0030 20 key equ 30h
0000 21 key_bit bit 00h ;確實有鍵按下標志
0001 22 key_on bit 01h ;防止按鍵連續按下處理
0002 23 finsh bit 02h ;凝固點到
0003 24 judge_key bit 03h ;判斷是否有延時
25
0031 26 ray_vol equ 31h ;測試鍵按下時光電初始值
0032 27 ray_voh equ 32h
28
0033 29 ray_vo3h equ 33h ;凝固時光電電壓與初始值的
0034 30 ray_vo3l equ 34h ;固定值差值,在調試時補上
0035 31 count equ 35h ;凝固點到的次數,防止誤動作
32
33
0036 34 sloid_sign equ 36h
0037 35 sloid_temph equ 37h
0038 36 sloid_templ equ 38h ;凝固點溫度
0039 37 temp_sign equ 39h
003A 38 temph equ 3ah
003B 39 templ equ 3bh
40
0081 41 tlc_do bit p0.1
0080 42 tlc_clk bit p0.0
00A3 43 tlc_cs bit p2.3
44
45
46 ;-----------------------------------
47
0000 48 org 0000h
0000 00 49 nop
0001 01C7 50 ajmp main
000B 51 org 000bh
000B 00 52 nop
000C 00 53 nop
000D 0130 54 ajmp intp
0030 55 org 0030h
0030 C2A4 56 intp: clr dog_cs
0032 00 57 nop
0033 00 58 nop
A51 MACRO ASSEMBLER SLOID_1 09/16/2005 20:22:45 PAGE 2
0034 D2A4 59 setb dog_cs
0036 C0E0 60 push acc
0038 C0D0 61 push psw
003A 75D008 62 mov psw,#08h
003D 758CB8 63 mov th0,#0b8h
0040 758AF0 64 mov tl0,#0f0h
0043 D28C 65 setb tr0
66 ;----------------------------
0045 C294 67 clr p1.4
0047 E580 68 mov a,p0
0049 B4FF02 69 cjne a,#0ffh,hav_key
004C 0162 70 ajmp abb
004E 200113 71 hav_key:jb key_on,abd
0051 30030A 72 jnb judge_key,abc
0054 C203 73 clr judge_key
0056 D200 74 setb key_bit
0058 D201 75 setb key_on
005A F530 76 mov key,a
005C 0164 77 ajmp abd
005E D203 78 abc: setb judge_key
0060 0164 79 ajmp abd
0062 C201 80 abb: clr key_on
0064 D294 81 abd: setb p1.4
82 ;----------------------------
0066 209559 83 jb p1.5,break ;測試沒開始不用比較光電
0069 31CC 84 acall tlc549
85 ;*************************************
86 ;*
87 ;*************************************
006B ED 88 mov a,r5
006C 7006 89 jnz qq1
006E EE 90 mov a,r6
006F C3 91 clr c
0070 943D 92 subb a,#3dh
0072 4037 93 jc qq2
0074 753500 94 qq1: mov count,#00h
0077 01C2 95 ajmp break
96 ;*************************************
97 ;*
98 ;*************************************
99
0079 749A 100 mov a,#9ah
007B C3 101 clr c
007C 9531 102 subb a,ray_vol
007E F9 103 mov r1,a
007F 7499 104 mov a,#99h
0081 9532 105 subb a,ray_voh
0083 FA 106 mov r2,a
0084 C3 107 clr c
0085 E9 108 mov a,r1
0086 2E 109 add a,r6
0087 D4 110 da a
0088 EA 111 mov a,r2
0089 3D 112 addc a,r5
008A D4 113 da a
114
008B 4035 115 jc break ;C=1說明光電的初始值<測量值
116
008D EE 117 mov a,r6
008E FA 118 mov r2,a
008F ED 119 mov a,r5
0090 FB 120 mov r3,a
0091 AC31 121 mov r4,ray_vol
0093 AD32 122 mov r5,ray_voh
0095 12028D 123 lcall dubcds ;計算光電的差值
0098 749A 124 mov a,#9ah
A51 MACRO ASSEMBLER SLOID_1 09/16/2005 20:22:45 PAGE 3
009A 9C 125 subb a,r4
009B F9 126 mov r1,a
009C 7499 127 mov a,#99h
009E 9D 128 subb a,r5
009F FA 129 mov r2,a
00A0 C3 130 clr c
00A1 E534 131 mov a,ray_vo3l ;光電的差值>固定差值,則凝固
00A3 29 132 add a,r1
00A4 D4 133 da a
00A5 E533 134 mov a,ray_vo3h
00A7 3A 135 addc a,r2
00A8 D4 136 da a
00A9 4017 137 jc break
00AB 138 qq2:
00AB 0535 139 inc count
00AD E535 140 mov a,count
00AF B43210 141 cjne a,#32h,break ;連續判斷5次,才能防止誤動作
00B2 753500 142 mov count,#00h
00B5 D202 143 setb finsh
00B7 D295 144 setb p1.5
00B9 853936 145 mov sloid_sign,temp_sign
00BC 853A37 146 mov sloid_temph,temph
00BF 853B38 147 mov sloid_templ,templ
148
00C2 D0D0 149 break: pop psw
00C4 D0E0 150 pop acc
00C6 32 151 reti
152
153
154
00C7 758160 155 main: mov sp,#60h
00CA 75D000 156 mov psw,#00h
00CD 7590FF 157 mov p1,#0ffh
00D0 752000 158 mov 20h,#00h
00D3 753400 159 mov ray_vo3l,#00h ;光電電壓固定差值
00D6 753302 160 mov ray_vo3h,#02h
00D9 7820 161 mov r0,#20h
00DB 7F40 162 mov r7,#40h
00DD E4 163 clr a
00DE F6 164 inta: mov @r0,a ;初始化
00DF DFFD 165 djnz r7,inta
00E1 7590FF 166 mov p1,#0ffh
00E4 75A0FF 167 mov p2,#0ffh
00E7 120219 168 lcall dog
00EA 758921 169 mov tmod,#21h
00ED 758CB8 170 mov th0,#0b8h
00F0 758AF0 171 mov tl0,#0f0h
00F3 75A882 172 mov ie,#82h
00F6 D28C 173 setb tr0
00F8 1201EC 174 lcall wr_53
00FB 175 circe: ;-------------------------主程序開始
00FB C2A4 176 clr dog_cs
00FD 00 177 nop
00FE 00 178 nop
00FF D2A4 179 setb dog_cs
0101 30001C 180 jnb key_bit,read_temp
0104 C200 181 clr key_bit
0106 E530 182 mov a,key
0108 20E00E 183 jb acc.0,p11
010B 309512 184 jnb p1.5,read_temp
010E C295 185 clr p1.5 ;制冷開始
0110 1201CC 186 lcall tlc549
0113 8E31 187 mov ray_vol,r6
0115 8D32 188 mov ray_voh,r5
0117 2120 189 ajmp read_temp
0119 20E104 190 p11: jb acc.1,read_temp
A51 MACRO ASSEMBLER SLOID_1 09/16/2005 20:22:45 PAGE 4
011C D295 191 setb p1.5 ;停止制冷
011E C202 192 clr finsh
0120 193 read_temp:
194
0120 2093D8 195 jb p1.3,circe
0123 90FAFF 196 mov dptr,#tim8253c
0126 E0 197 movx a,@dptr
0127 F4 198 cpl a
0128 F8 199 mov r0,a
0129 E0 200 movx a,@dptr
012A F4 201 cpl a
012B F9 202 mov r1,a
012C C3 203 clr c
012D E8 204 mov a,r0
012E 9460 205 subb a,#60h
0130 F8 206 mov r0,a
0131 E9 207 mov a,r1
0132 9463 208 subb a,#63h
0134 F9 209 mov r1,a
0135 400C 210 jc dc1
0137 120271 211 lcall dubcd
013A 75390A 212 mov temp_sign,#0ah ;temp_sign=0ah說明溫度為正
013D 8D3A 213 mov temph,r5
013F 8C3B 214 mov templ,r4
0141 2158 215 ajmp wr_lcd
0143 C3 216 dc1: clr c
0144 E8 217 mov a,r0
0145 F4 218 cpl a
0146 2401 219 add a,#01h
0148 F8 220 mov r0,a
0149 E9 221 mov a,r1
014A F4 222 cpl a
014B 3400 223 addc a,#00h
014D F9 224 mov r1,a
014E 120271 225 lcall dubcd
0151 75390B 226 mov temp_sign,#0bh ;temp_sign=0bh說明溫度為負
0154 8D3A 227 mov temph,r5
0156 8C3B 228 mov templ,r4
0158 300209 229 wr_lcd: jnb finsh,abh
015B 853639 230 mov temp_sign,sloid_sign
015E 85373A 231 mov temph,sloid_temph
0161 85383B 232 mov templ,sloid_templ
233
0164 783C 234 abh: mov r0,#lcd_buf
0166 760A 235 mov @r0,#0ah ;-
0168 08 236 inc r0
0169 A639 237 mov @r0,temp_sign
016B 08 238 inc r0
016C E53A 239 mov a,temph
016E 54F0 240 anl a,#0f0h
0170 C4 241 swap a
0171 F6 242 mov @r0,a
0172 08 243 inc r0
0173 E53A 244 mov a,temph
0175 540F 245 anl a,#0fh
0177 F6 246 mov @r0,a
0178 08 247 inc r0
0179 E53B 248 mov a,templ
017B 54F0 249 anl a,#0f0h
017D C4 250 swap a
017E F6 251 mov @r0,a
017F 7F05 252 mov r7,#05h
0181 793C 253 mov r1,#lcd_buf
0183 783C 254 mov r0,#lcd_buf
0185 E6 255 aaq: mov a,@r0
0186 900191 256 mov dptr,#arry
A51 MACRO ASSEMBLER SLOID_1 09/16/2005 20:22:45 PAGE 5
0189 93 257 movc a,@a+dptr
018A F7 258 mov @r1,a
018B 09 259 inc r1
018C 08 260 inc r0
018D DFF6 261 djnz r7,aaq
018F 21A1 262 ajmp data_lcd
0191 88BBC191 263 arry: db 88h,0bbh,0c1h,91h,0b2h,94h,84h,0b8h,80h,90h
0195 B29484B8
0199 8090
019B FFF7CC83 264 db 0ffh,0f7h,0cch,83h,0c4h,0e4h
019F C4E4
01A1 265 data_lcd:
01A1 7F05 266 mov r7,#05h
01A3 793C 267 mov r1,#lcd_buf
268 ;-----------------------
01A5 E9 269 mov a,r1
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -