NEC单片机汇编程序求助~~~【恢复】
NECuD78K0SF9232单片机应用于空调控制模块,公司给了汇编代码,让我编出另一个,好晦涩看都看不懂,不知哪位达人有空帮忙解答了,谢谢~~代码很长 估计是2次采样的间隔时间或单次采样的稳定时间。 TEMP_TAB: ;3450 db 13 ;97
db 14 ;98
db 14 ;99
db 14 ;100
db 15 ;101
db 15 ;102
db 16 ;103
db 16 ;104
db 16 ;105
db 17 ;106
db 17 ;107
db 18 ;108
db 18 ;109
db 18 ;110
db 19 ;111
db 19 ;112
db 20 ;113
db 20 ;114
db 20 ;115
db 21 ;116
db 21 ;117
db 22 ;118
db 22 ;119
db 22 ;120
db 23 ;121
db 23 ;122
db 24 ;123
db 24 ;124
db 24 ;125
db 25 ;126
db 25 ;127
db 25 ;128
db 26 ;129
db 26 ;130
db 27 ;131
db 27 ;132
db 28 ;133
db 28 ;134
db 28 ;135
db 29 ;136
db 29 ;137
db 30 ;138
db 30 ;139
db 30 ;140
db 31 ;141
db 31 ;142
db 32 ;143
db 32 ;144
db 33 ;145
db 33 ;146
db 33 ;147
db 34 ;148
db 34 ;149
db 35 ;150
db 35 ;151
========================================================
这个是表,不好意思一次贴这么多汗~我不明白的就是
ADSAMPLE:
CMP SAMP_TIME,#30 ;60ms
BNC $ADSTART ;2ms一次
RET
告诉我是2ms采样一次的意思我不明白 ADCSUM: DS 2
SAMPCNT: DS 1
ADCMIN: DS 1
ADCMAX: DS 1
ADVAL: DS 1
T1: DS 1
T2_adval: DS 1
SAMP_TIME: DS 1
ADSAMPLE:
CMP SAMP_TIME,#30 ;60ms
BNC $ADSTART ;2ms一次
RET
ADSTART:
MOV SAMP_TIME,#0
SET1 ADCS ;置1开始AD转换
ADLOOP:
BF ADIF,$ADLOOP ;ADIF=0(无中断信号)死循环
CLR1 ADIF
CLR1 ADCS ;
MOV A,ADCRH ;ADCRH 8位AD转换结果寄存器
INC SAMPCNT ;采样次数
CMP SAMPCNT,#2
BNC $AD0 ;取第二次采样结果
MOV ADCMIN,A ;第1次采样结果作为ADCMIN
MOVW AX,#0
MOVW ADCSUM,AX
RET
AD0:
CMP SAMPCNT,#3
BNC $MINCHK ;第3次采样执行MINCHK
CMP A,ADCMIN ;
BNC $AD1 ;第2次采样A大于ADCMIN执行AD1
XCH A,ADCMIN ;A小于ADCMIN将A结果作为MIN
AD1:
MOV ADCMAX,A
RET
MINCHK:
CMP A,ADCMIN
BNC $MAXCHK ;A大于等于最小值转到MAXCHK,与最大值比较
XCH A,ADCMIN ;A小于最小值,将A作为最小值
BR ADSUM
MAXCHK:
CMP A,ADCMAX ;
BC $ADSUM ;A小于ADCMAX大于ADCMIN时执行ADSUM
XCH A,ADCMAX ;A大于ADCMAX将A值作为ADCMAX
ADSUM: ;累加
ADD A,ADCSUM ;ADCSUM初值0
MOV ADCSUM,A
ADDC ADCSUM+1,#0
MOV A,ADCSUM+1
CMP SAMPCNT,#6
BNC $AVERAGE ;采样结果6次累加,大于6次后转到平均
RET
AVERAGE: ;去掉最大值后采样值平均
MOV SAMPCNT,#0
CLR1 CY
RORC A,1
MOV ADCSUM+1,A
MOV A,ADCSUM
RORC A,1
MOV ADCSUM,A
MOV A,ADCSUM+1 ;/2
CLR1 CY
RORC A,1
MOV ADCSUM+1,A
MOV A,ADCSUM
RORC A,1
MOV ADCSUM,A ;/4 第1次采样和采样最大值不要
MOV ADVAL,A ;
;---------------------------------
T1CHANNEL:
MOV A,ADS
CMP A,#0
BNZ $T2CHANNEL ;ADS不为0转到2通道,两通道互换T1,T2
MOV A,ADVAL
MOV T1_adval,A
CMP A,#5
BC $SETT1ERR
CMP A,#250
BNC $SETT1ERR ;A小于5大于250出错SETT1ERR
CLR1 T1err_f
T1_LOOKUP:
CMP A,#151+1
BC $T1_LOOKUP1 ;小于152跳转
MOV T1,#35 ;大于152给35,结束
BR $T1_RET
T1_LOOKUP1:
CMP A,#97
BNC $T1_LOOKUP2 ;大于97,跳
MOV T1,#13 ;根据表,小于97给13,结束
BR $T1_RET
T1_LOOKUP2:
SUB A,#97
MOV X,A
MOV A,#0
ADDW AX,#TEMP_TAB
MOVW HL,AX
MOV A,
MOV T1,A
BR $T1_RET
SETT1ERR: ;错误提示,大于250,小于5时
; SET1 T1err_f
MOV T1,#13
T1_RET:
MOV ADS,#1
RET
;==================
T2CHANNEL:
MOV A,ADVAL
MOV T2_adval,A
CMP A,#5
BC $SETT2ERR
CMP A,#250
BNC $SETT2ERR
CLR1 T2err_f
BR $T2_RET
SETT2ERR:
; SET1 T2err_f
T2_RET:
MOV ADS,#0
RET
=================================
这个是两通道采样的程序,老大上次说好像第一次采样的结果不要,采样最高值不要,一共六次温度采样,然后两个AD通道轮流运转。 谢谢各位~吼吼吼吼 楼主可以把看不懂的地方贴出来啊 2322317yg:
你好!我也是做空调的,在用F9222,你不介意的可以把你公司给的汇编源代码和原来的电控板原理图及新的原理图还有电控规格书发给我,看我能不能帮得上,619968825@QQ.COM.
页:
[1]