⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad_input.asm

📁 这是东芝单片机进行AD转换,及键操做的程序
💻 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 + -