📄 assembler of constants.c
字号:
a178: cjne a,#0d8h,a179
lcall prtlcd
db '226.4',0
ljmp st
a179: cjne a,#0d9h,a180
lcall prtlcd
db '227.3',0
ljmp st
a180: cjne a,#0dah,a181
lcall prtlcd
db '228.2',0
ljmp st
a181: cjne a,#0dbh,a182
lcall prtlcd
db '229.1',0
ljmp st
a182: cjne a,#0dch,a183
lcall prtlcd
db '230.0',0
ljmp st
a183: cjne a,#0ddh,a184
lcall prtlcd
db '230.9',0
ljmp st
a184: cjne a,#0deh,a185
lcall prtlcd
db '231.8',0
ljmp st
a185: cjne a,#0dfh,a186
lcall prtlcd
db '232.7',0
ljmp st
a186: cjne a,#0e0h,a187
lcall prtlcd
db '233.6',0
ljmp st
a187: cjne a,#0e1h,a188
lcall prtlcd
db '234.5',0
ljmp st
a188: cjne a,#0e2h,a189
lcall prtlcd
db '235.4',0
ljmp st
a189: cjne a,#0e3h,a190
lcall prtlcd
db '236.3',0
ljmp st
a190: cjne a,#0e4h,a191
lcall prtlcd
db '237.4',0
ljmp st
a191: cjne a,#0e5h,a192
lcall prtlcd
db '238.1',0
ljmp st
a192: cjne a,#0e6h,a193
lcall prtlcd
db '239.0',0
ljmp st
a193: cjne a,#0e7h,a194
lcall prtlcd
db '239.9',0
ljmp st
a194: cjne a,#0e8h,a195
lcall prtlcd
db '240.8',0
ljmp st
a195: cjne a,#0e9h,a196
lcall prtlcd
db '241.7',0
ljmp st
a196: cjne a,#0eah,a197
lcall prtlcd
db '242.6',0
ljmp st
a197: cjne a,#0ebh,a198
lcall prtlcd
db '243.5',0
ljmp st
a198: cjne a,#0ech,a199
lcall prtlcd
db '244.4',0
ljmp st
a199: cjne a,#0edh,a200
lcall prtlcd
db '245.3',0
ljmp st
a200: cjne a,#0eeh,a201
lcall prtlcd
db '246.2',0
ljmp st
a201: cjne a,#0efh,a202
lcall prtlcd
db '247.1',0
ljmp st
a202: cjne a,#0f0h,a203
lcall prtlcd
db '248.0',0
ljmp st
a203: cjne a,#0f1h,a204
lcall prtlcd
db '248.9',0
ljmp st
a204: cjne a,#0f2h,a205
lcall prtlcd
db '249.8',0
ljmp st
a205: cjne a,#0f3h,a206
lcall prtlcd
db '250.7',0
ljmp st
a206: cjne a,#0f4h,a207
lcall prtlcd
db '251.6',0
ljmp st
a207: cjne a,#0f5h,a208
lcall prtlcd
db '252.5',0
ljmp st
a208: cjne a,#0f6h,a209
lcall prtlcd
db '253.4',0
a209: cjne a,#0f7h,a210
lcall prtlcd
db '254.3',0
ljmp st
a210: cjne a,#0f8h,a211
lcall prtlcd
db '255.2',0
ljmp st
a211: cjne a,#0f9h,a212
lcall prtlcd
db '256.1',0
ljmp st
a212: cjne a,#0fah,a213
lcall prtlcd
db '257.0',0
a213: ljmp st
; MAX CHIP TEMP = 257 DEG F.
; start of Serial communications routine with the 1620.
out_cmd:
clr p3.2 ; reset ds1620
setb p3.2 ;
out_data:
mov sbuf,a ; move data 'out' to ds1620
oops:
jnb ti,oops ; loop here until all data is out
clr ti ; clear ti bit 'transmit interupt'
ret ; Now go back.
in_data:
setb ren ; enable receiver to clock in data
wait_up:
jnb ri,wait_up ; loop here until all data is received
mov a,sbuf ; move data too ACC
clr ren ; dissable receiver, prevent
; another reception
clr ri ; clear ri 'receive interupt'
ret ; Finished here , go back.
resetlcd:
clr lcd_rs ; reset LCD routine
clr lcd_rw
clr lcd_e
mov r4,#30h
setb lcd_e
clr lcd_e
mov a,#4
lcall delay
mov lcd_data,#30h
setb lcd_e
clr lcd_e
mov a,#1
lcall delay
mov lcd_data,#30h
setb lcd_e
clr lcd_e
mov a,#1
lcall delay
mov r4,#config
lcall wrlcdcom
mov r4,#08h
lcall wrlcdcom
mov r4,#01h
lcall wrlcdcom
mov r4,#entrymode
lcall wrlcdcom
ret
initlcd:
clr lcd_rs ; initialize LCD routine.
clr lcd_rw
clr lcd_e
mov r4,#38h
lcall wrlcdcom
mov r4,#0eh
lcall wrlcdcom
mov r4,#06h
lcall wrlcdcom
mov r4,#01h
lcall wrlcdcom
ret
big_delay:
mov r0,#1 ; delay routine.
x0b:
mov r2,#0ffh ; Crude But Effective!
x1b:
mov r5,#0ffh
x2b:
djnz r5,x2b
djnz r2,x1b
djnz r0,x0b
ret
wrlcdcom:
clr lcd_e ; write 'command data' to LCD routine.
clr lcd_rs
clr lcd_rw
mov lcd_data,r4
lcall pulseEwait
ret
pulseEwait:
lcall delay ; delay needed for slower LCD's.
clr lcd_e ; routine to see if LCD is still busy.
setb lcd_e
clr lcd_e
mov lcd_data,#0ffh
setb lcd_rw
push acc
pew:
inc b
setb lcd_e
mov a,lcd_data
clr lcd_e
jb acc.7, pew
pop acc
ret
prtlcd:
pop dph ; prtlcd is our main display printing routine
pop dpl ; this routine will print the information
; located directly below the calling routine.
okee_doke:
clr a ; the information after the ( DB ) statement.
movc a,@a+dptr
cjne a,#0,its_ok
sjmp retprtlcd
its_ok:
mov r4,a
lcall wrlcddata
inc dptr
ljmp okee_doke
ret
wrlcddata:
clr lcd_e
setb lcd_rs
clr lcd_rw
mov lcd_data,r4
lcall pulseEwait
ret
retprtlcd:
mov a,#1h
jmp @a+dptr
placecur:
dec acc ; this routine will place the cursor at a
jnz line2 ; specific place : A holds the line, and
mov a,b ; B holds the column locations
; when this routine is called.
add a,#80h
sjmp setcur
line2:
cjne a,#1,line3
mov a,b
add a,#0c0h
sjmp setcur
line3:
cjne a,#2,line4
mov a,b
add a,#94h
sjmp setcur
line4:
mov a,b
add a,#0d4h
setcur:
mov r4,a
lcall wrlcdcom
ret
delay:
dec a
d_olp:
push acc
mov a,#0a6h
d_ilp:
inc a
nop
nop
nop
nop
nop
nop
nop
nop
pop acc
djnz acc,d_olp
mov a,#0a6h
d_lp2:
inc a
nop
nop
nop
nop
nop
nop
nop
nop
jnz d_lp2
nop
nop
nop
nop
nop
ret
; Begin routine to accept user entry of device programming setpoints.
up1:
mov p2,#0ffh
lcall big_delay
mov r6,#2ah ; starting value of 69.8 deg F.
lcall resetlcd
lcall initlcd
mov a,#1
mov b,#0
lcall placecur
lcall prtlcd
db '* SELECT SETPOINTS *',0
mov a,#2
mov b,#0
lcall placecur
lcall prtlcd
db 'HIGH TEMP =>',0; set up for high temp entry
up2:
mov a,#2 ; line #2 on lcd
mov b,#12 ; position #12 for temp entry
lcall placecur
mov a,r6 ; get high temp setting
mov r1,#00h
lcall look_up
mov a,#2
mov b,#18
lcall placecur
lcall prtlcd
db 11011111b,01000110b,0
mov r4,#offcur
lcall wrlcdcom
lcall big_delay
sjmp up_or_down
up22:
mov a,#2
mov b,#12
lcall placecur
mov a,r6
lcall look_up
lcall
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -