?? ad_input.asm
字號:
;===========================================================
;名 稱:AD輸入測試程序
;說 明:通過MCU的AD端口讀入熱電阻變化值,經過軟件濾波查表
; 后得到實際溫度
;入口參數:
;出口參數:TEMP1/TEMP2/TEMP3
;程序入口:
;占用資源:
;===========================================================
$include "TMP86P808.H";包含頭文件
;-------------------------------
;中斷及復位向量
;-------------------------------
CODE_INVEC SECTION CODE ABS=0XFFE0
INTVEC:
DW TO_RETI;/INT5 0XFFE0
DW TO_RETI;INTTXD1 0XFFE2
DW TO_RETI;INTRXD1 OXFFE4
DW TO_RETI;INT 0XFFE6
DW TO_RETI;INTTIC0 0XFFE8
DW TO_RETI;INTET0 0XFFEA
DW TO_RETI;INTTXD0 0XFFEC
DW TO_RETI;INTRXD0 0XFFEE
DW TO_RETI;INTT1 0XFFF0
DW INTTBT;INTTBT 0XFFF2
DW TO_RETI;INT1 0XFFF4
DW TO_RETI;/INTT0 0XFFF6
DW TO_RETN;INTWDT 0XFFF8
DW TO_RETN;INTATRAP 0XFFFA
DW TO_RETN;INTUNDEF 0XFFFC
DW START;RESET 0XFFFE
;------------------------------------
;=========================================內存分配
;LCD_DAT0102 EQU 0X40
;LCD_DAT0304 EQU 0X41
;LCD_DAT0506 EQU 0X42
;LCD_DAT0708 EQU 0X43
;LCD_DAT0910 EQU 0X44
;LCD_DAT1112 EQU 0X45
;LCD_DAT13 EQU 0X46
;LCD_DAT1415 EQU 0X47
;LCD_DAT1617 EQU 0X48
;LCD_DAT1819 EQU 0X49
;LCD_DAT2021 EQU 0X4A
;LCD_DAT2223 EQU 0X4B
;LCD_DAT24 EQU 0X4C
;-----------------------------------------------------------
;LCD_BCNT EQU 0X4D
HOUR EQU 0X4E
MIN EQU 0X4F
SEC EQU 0X50
MS EQU 0X51
TEN_MS EQU 0X52
;LBIT EQU 0X53
;HBIT EQU 0X54
;DIS_FLAG EQU 0X55
;----------------------------------------LED_DISP
;COM1_DATA EQU 0X56
;COM2_DATA EQU 0X57
;COM3_DATA EQU 0X58
;COM4_DATA EQU 0X59
TEMP1 EQU 0X5A
TEMP2 EQU 0X5B
;----------------------------------------I2C
;BIT_CNT EQU 0X5C
;WR_ADR EQU 0X5D
;RD_ADR EQU 0X5E
;WR_DATA EQU 0X5F
;RD_DATA EQU 0X60
;FLAG EQU 0X61
;----------------------------
;SDA_IN EQU 0XEF
;SDA_OUT EQU 0XFF
;---------------------------------------REMOTE_CTRL
;R_CODE EQU 0X62
;RAM_CNT EQU 0X63
;RBIT_CNT EQU 0X64
;RECV_FLAG EQU 0X65
;RCODE_ADR EQU 0X66;67H/68H/69H遙控碼存儲器開始地址
;---------------------------------------AD_KEY
;KEY_TMP EQU 0X6A
;KEY_NAME EQU 0X6B
;KEY_CODE EQU 0X6C
;KEY_FLAG EQU 0X6D
BP_FLAG EQU 0X6F;蜂鳴器標志
BP_TIM EQU 0X70;蜂鳴器鳴響時間
;---------------------------------------PWM_OUT
TEMP3 EQU 0X6E
;---------------------------------------AD_INPUT
TTEMP1 EQU 0X71
TTEMP2 EQU 0X72
TTEMP3 EQU 0X73
;=======================================LCD_DISP位定義
TBTEN EQU 3
BP_ON EQU 0;打開蜂鳴器標志,1有效
;LCD_DAT EQU 7
;LCD_CLK EQU 0
;LCD_CS EQU 0
;FLASH EQU 0
;---------------------------------------LED_DISP位定義
;LED_CLK EQU 6;P36
;LED_DAT EQU 7;P37
;LED_D0 EQU 5;P05
;LED_D1 EQU 6;P06
;LED_D2 EQU 1;P11
;LED_CLR EQU 2;P02
;-----------------------------------------I2C位定義
;SDA EQU 4
;SCL EQU 3
;READ_FLAG EQU 0
;-------------------------------------remote_CTRL位定義
;REV_OK EQU 0
;FIRST EQU 1
;HEAD EQU 2
;--------------------------------------AD_KEY位定義
ADS EQU 7
EOCF EQU 5
;WAIT_POP EQU 0
;--------------------------------------PWM_OUT位定義
;TC4S EQU 3
;===========================================================
;=============================================主程序開始
MAIN_CODE SECTION CODE ABS=0XE000
START:
LD SP,0X13F;堆棧指針
LD (SYSCR2),0X80;單時鐘模式
LD (WDTCR1),0X00
LD (WDTCR2),0XB1;禁用WDT
LD (P0),0X0
LD (P1),0X0
LD (P2),0X0
LD (P3),0XFF
LD (P0OUTCR),0XE5;
LD (P1CR),0XFF;P1全部輸出
; LD (P2PRD),0X01;
LD (P3CR),0X00;
;------------------------------------------內存清0
RAM_CLR:
LD HL,0X40
LD WA,0X13F-0X40
RCLR1:
LD (HL),0X0
INC HL
DEC WA
J F,RCLR1
;---------------------------------------------------主循環
LOOP:
SET (BP_FLAG).BP_ON
LD (TBTCR),0X05;每次中斷約1MS-4MHZ晶振
DI
SET (TBTCR).TBTEN;啟動TBT
SET (EIRL).6;允許TBT中斷
EI;打開中斷
LOOP1:
CALL AD_INPUT
J LOOP1
;===========================================================
;===========================================================
;NO_USEINT SECTION CODE MEDIUM;未使用中斷向量處理
TO_RETI:
RETI
TO_RETN:
RETN
;===========================================================
;==========================================TBT構成的實時時鐘
INTTBT:
PUSH A
PUSH B
PUSH C
PUSH H
PUSH L;壓棧
MSF:
INC (MS);每次中斷約等于1ms
CMP (MS),0X0A
J CS,CLOCK_EXIT;是否大于等于10ms
;----------------------------------------------蜂鳴器
LD CF,(BP_FLAG).BP_ON
J CC,TEN_MSF;是否要打開蜂鳴器
SET (P1).2
INC (BP_TIM)
CMP (BP_TIM),30
J CS,TEN_MSF;蜂鳴器是否鳴想了30ms
CLR (BP_FLAG).BP_ON
LD (BP_TIM),0
CLR (P1).2
;---------------------------------------------------
TEN_MSF:
LD (MS),0X0
INC (TEN_MS)
CMP (TEN_MS),0X64
J CS,CLOCK_EXIT
SECF:
LD (TEN_MS),0X0
INC (SEC)
CMP (SEC),0X3C
J CS,CLOCK_EXIT
MINF:
LD (SEC),0X0
INC (MIN)
CMP (MIN),0X3C
J CS,CLOCK_EXIT
HOURF:
LD (MIN),0X0
INC (HOUR)
CMP (HOUR),0X3C
J CS,CLOCK_EXIT
LD (HOUR),0X0
CLOCK_EXIT:
POP L
POP H
POP C
POP B
POP A
RETI
;===========================================================
;===========================================================
AD_INPUT:
LD (ADCCR2),0X04;速率為19.5us,4mhz
LD (ADCCR1),0X21;選擇AD通道2,單次啟動
LD HL,TTEMP1
LD A,0X03;3次AD
WAIT_AD:
SET (ADCCR1).ADS;啟動AD
LD CF,(ADCDR2).EOCF
J CC,WAIT_AD;等待AD轉換結束
LD B,(ADCDR1);讀取AD結果
SUB B,80
LD (HL),B
INC HL
INC (ADCCR1)
DEC A
J NZ,WAIT_AD
;---------------------------------- 查表
LD C,(TTEMP1)
LD HL,TEMP_TAB
LD A,(HL+C)
LD (TEMP1),A
;------------------------------TEMP2
LD C,(TTEMP2)
LD HL,TEMP_TAB
LD A,(HL+C)
LD (TEMP2),A
;------------------------------TEMP3
LD C,(TTEMP3)
LD HL,TEMP_TAB
LD A,(HL+C)
LD (TEMP3),A
RET
;===========================================================
TEMP_TAB:
DB 0XFD;251 ; 80
DB 0XFD;251 ; 81
DB 0XFD;251 ; 82
DB 0XFD;251 ; 83
DB 0XFD;255 ; 84
DB 0XFE;255 ; 85
DB 0XFE;255 ; 86
DB 0XFE;255 ; 87
DB 0XFE;255 ; 88
DB 0XFF;255 ; 89
DB 0XFF;255 ; 90
DB 0XFF;255 ; 91
DB 0X00;0 ; 92
DB 0X00;0 ; 93
DB 0X00;0 ; 94
DB 0X01;1 ; 95
DB 0X01;1 ; 96
DB 0X01;1 ; 97
DB 0X02;2 ; 98
DB 0X02;2 ; 99
DB 0X02;2 ; 100
DB 0X02;2 ; 101
DB 0X03;3 ; 102
DB 0X03;3 ; 103
DB 0X04;4 ; 104
DB 0X04;4 ; 105
DB 0X05;5 ; 106
DB 0X05;5 ; 107
DB 0X05;5 ; 108
DB 0X06;6 ; 109
DB 0X06;6 ; 110
DB 0X07;7 ; 111
DB 0X07;7 ; 112
DB 0X07;7 ; 113
DB 0X08;8 ; 114
DB 0X08;8 ; 115
DB 0X08;8 ; 116
DB 0X09;9 ; 117
DB 0X09;9 ; 118
DB 0X0A;10 ; 119
DB 0X0A;10 ; 120
DB 0X0A;10 ; 121
DB 0X0B;11 ; 122
DB 0X0B;11 ; 123
DB 0X0B;11 ; 124
DB 0X0C;12 ; 125
DB 0X0C;12 ; 126
DB 0X0D;13 ; 127
DB 0X0D;13 ; 128
DB 0X0D;13 ; 129
DB 0X0E;14 ; 130
DB 0X0E;14 ; 131
DB 0X0E;14 ; 132
DB 0X0F;15 ; 133
DB 0X0F;15 ; 134
DB 0X10;16 ; 135
DB 0X10;16 ; 136
DB 0X10;16 ; 137
DB 0X11;17 ; 138
DB 0X11;17 ; 139
DB 0X11;17 ; 140
DB 0X12;18 ; 141
DB 0X12;18 ; 142
DB 0X13;19 ; 143
DB 0X13;19 ; 144
DB 0X14;20 ; 145
DB 0X14;20 ; 146
DB 0X14;20 ; 147
DB 0X15;21 ; 148
DB 0X15;21 ; 149
DB 0X16;22 ; 150
DB 0X16;22 ; 151
DB 0X16;22 ; 152
DB 0X17;23 ; 153
DB 0X17;23 ; 154
DB 0X18;24 ; 155
DB 0X18;24 ; 156
DB 0X19;25 ; 157
DB 0X19;25 ; 158
DB 0X1A;26 ; 159
DB 0X1A;26 ; 160
DB 0X1A;26 ; 161
DB 0X1B;27 ; 162
DB 0X1B;27 ; 163
DB 0X1C;28 ; 164
DB 0X1C;28 ; 165
DB 0X1D;29 ; 166
DB 0X1D;29 ; 167
DB 0X1D;29 ; 168
DB 0X1E;30 ; 169
DB 0X1E;30 ; 170
DB 0X1F;31 ; 171
DB 0X1F;31 ; 172
DB 0X20;32 ; 173
DB 0X20;32 ; 174
DB 0X21;33 ; 175
DB 0X21;33 ; 176
DB 0X22;34 ; 177
DB 0X22;34 ; 178
DB 0X23;35 ; 179
DB 0X23;35 ; 180
DB 0X24;36 ; 181
DB 0X24;36 ; 182
DB 0X25;37 ; 183
DB 0X25;37 ; 184
DB 0X26;38 ; 185
DB 0X27;39 ; 186
DB 0X27;39 ; 187
DB 0X28;40 ; 188
DB 0X28;40 ; 189
DB 0X29;41 ; 190
DB 0X29;41 ; 191
DB 0X2A;42 ; 192
DB 0X2B;43 ; 193
DB 0X2B;43 ; 194
DB 0X2C;44 ; 195
DB 0X2C;44 ; 196
DB 0X2D;45 ; 197
DB 0X2E;46 ; 198
DB 0X2E;46 ; 199
DB 0X2F;47 ; 200
DB 0X30;48 ; 201
DB 0X30;48 ; 202
DB 0X31;49 ; 203
DB 0X32;50 ; 204
DB 0X33;51 ; 205
DB 0X33;51 ; 206
DB 0X34;52 ; 207
DB 0X35;53 ; 208
DB 0X36;54 ; 209
DB 0X36;54 ; 210
DB 0X37;55 ; 211
DB 0X38;56 ; 212
DB 0X39;57 ; 213
DB 0X3A;58 ; 214
DB 0X3B;59 ; 215
DB 0X3C;60 ; 216
DB 0X3D;61 ; 217
DB 0X3E;62 ; 218
DB 0X3F;63 ; 219
DB 0X40;64 ; 220
DB 0X41;65 ; 221
DB 0X42;66 ; 222
DB 0X43;67 ; 223
DB 0X44;68 ; 224
DB 0X45;69 ; 225
DB 0X46;70;226
DB 0X47;71;227
END
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -