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

📄 tmp_lcd_clock.asm

📁 这是用东芝单片机作为时钟控制器的程序,分为时钟和显示两部分
💻 ASM
📖 第 1 页 / 共 2 页
字号:
			CALL			HEX2BCD
			LD				C,(HBIT)
			LD				HL,DIS_TABLCD
			LD				A,(HL+C);查表得出显示码
			LD				(LCD_DAT1415),A
			LD				C,(LBIT)
			LD				HL,DIS_TABLCD1
			LD				A,(HL+C)
			LD				(LCD_DAT0506),A
;----------------------------------------秒显示
SEC_DTEST:
			LD				CF,(MENU).S_SET;在设置状态闪烁
			J					CC,SEC_DIS
			LD				CF,(DIS_FLAG).FLASH
			J					CC,F_DISP
SEC_DIS:
			LD				A,(SEC)
			LD				(LBIT),A
			CALL			HEX2BCD
			LD				C,(HBIT)
			LD				HL,DIS_TABLCD1
			LD				A,(HL+C);查表得出显示码
			LD				(LCD_DAT0910),A
			LD				C,(LBIT)
			LD				HL,DIS_TABLCD1
			LD				A,(HL+C)
			LD				(LCD_DAT1112),A
;----------------------------------------闪烁显示
F_DISP:
			LD				CF,(DIS_FLAG).FLASH
			J					CC,DIS_IN
			LD				(LCD_DAT1617),0X04
			LD				(LCD_DAT0708),0X40
;---------------------------------------写入命令码
DIS_IN:
			CALL			DIS_START
			LD				B,0XA0;B作为显示缓存器
			LD				(LCD_BCNT),0X09
			CLR				(P1).LCD_CS
			CLR				CF
			CALL			DIS_NOW
;****************************************字段显示
;-----------------------------------------COM
;----------------------------------------pin12
;			LD				B,(LCD_DAT0102);装入显示数据
;			LD				(LCD_BCNT),0X08;显示位数
;			CALL			DIS_NOW
;----------------------------------------pin34
;			LD				B,(LCD_DAT0304);装入显示数据
;			LD				(LCD_BCNT),0X08;显示位数
;			CALL			DIS_NOW
;----------------------------------------pin56
			LD				B,(LCD_DAT0506);装入显示数据
			LD				(LCD_BCNT),0X08;显示位数
			CALL			DIS_NOW
;----------------------------------------pin78
			LD				B,(LCD_DAT0708);装入显示数据
			LD				(LCD_BCNT),0X08;显示位数
			CALL			DIS_NOW
;----------------------------------------pin0910
			LD				B,(LCD_DAT0910);装入显示数据
			LD				(LCD_BCNT),0X08;显示位数
			CALL			DIS_NOW
;----------------------------------------pin1112
			LD				B,(LCD_DAT1112);装入显示数据
			LD				(LCD_BCNT),0X08;显示位数
			CALL			DIS_NOW
;----------------------------------------pin13
			LD				B,(LCD_DAT13);装入显示数据
			LD				(LCD_BCNT),0X04;显示位数
			CALL			DIS_NOW
;----------------------------------------pin1415
			LD				B,(LCD_DAT1415);装入显示数据
			LD				(LCD_BCNT),0X08;显示位数
			CALL			DIS_NOW
;----------------------------------------pin1617
			LD				B,(LCD_DAT1617);装入显示数据
			LD				(LCD_BCNT),0X08;显示位数
			CALL			DIS_NOW
;----------------------------------------pin1819
			LD				B,(LCD_DAT1819);装入显示数据
			LD				(LCD_BCNT),0X08;显示位数
			CALL			DIS_NOW
;----------------------------------------pin2021
			LD				B,(LCD_DAT2021);装入显示数据
			LD				(LCD_BCNT),0X08;显示位数
			CALL			DIS_NOW
;----------------------------------------pin2223
			LD				B,(LCD_DAT2223);装入显示数据
			LD				(LCD_BCNT),0X08;显示位数
			CALL			DIS_NOW
;----------------------------------------pin24
			LD				B,(LCD_DAT24);装入显示数据
			LD				(LCD_BCNT),0X08;显示位数
			CALL			DIS_NOW
;-----------------------------------------------
			CALL			DIS_KEEP
			;CALL			DIS_OFF
			RET
;==========================================================


;===============================================显示硬件驱动
DIS_NOW:
			CLR				(P1).LCD_CLK
			ROLC			B
			J					CC,DAT_0
			SET				(P3).LCD_DAT
			J					WRITE_NOW
DAT_0:
			CLR				(P3).LCD_DAT
WRITE_NOW:
			NOP
			NOP
			SET				(P1).LCD_CLK
			DEC				(LCD_BCNT)
			J					NZ,DIS_NOW
			RET
;=================================================显示初始化
DIS_START:
			SET				(P1).LCD_CS
			LD				B,0X80;开始设置模式
			NOP
			CLR				(P1).LCD_CS
			LD				(LCD_BCNT),0X03
			CALL			DIS_NOW
			LD				B,0X01;SYS ON
			LD				(LCD_BCNT),0X09
			CALL			DIS_NOW
			LD				B,0X18;系统时钟源,片内RC振荡器
			LD				(LCD_BCNT),0X09
			CALL			DIS_NOW
			LD				B,0X29;BASE1/3 4COM
			LD				(LCD_BCNT),0X09
			CALL			DIS_NOW
			LD				B,0X03;打开LCD偏压发生器LCD ON
			LD				(LCD_BCNT),0X09
			CALL			DIS_NOW
			SET				(P1).LCD_CS
			RET
;===================================================关闭显示
DIS_OFF:
			SET				(P1).LCD_CS
			LD				B,0X80;开始设置模式
			NOP
			CLR				(P1).LCD_CS
			LD				(LCD_BCNT),0X03
			CALL			DIS_NOW
			LD				B,0X02
			LD				(LCD_BCNT),0X09
			CALL			DIS_NOW
			SET				(P1).LCD_CS
			RET
;===========================================================




;===========================================================
LED_DISP:
			LD				(P0),0
			LD				(COM1_DATA),0X00
			LD				(COM2_DATA),0X00
			LD				(COM3_DATA),0X00
			LD				(COM4_DATA),0X00
;----------------------------------COM1/2
			LD				B,(TEMP1)
			LD				(LBIT),B
			CALL			HEX2BCD
			LD				C,(HBIT)
			LD				HL,DIS_TAB
			LD				A,(HL+C)
			LD				(COM1_DATA),A
			LD				C,(LBIT)
			LD				HL,DIS_TAB
			LD				A,(HL+C)
			LD				(COM2_DATA),A
;----------------------------------COM3/4
			LD				B,(TEMP3)
			LD				(LBIT),B
			CALL			HEX2BCD
			LD				C,(HBIT)
			LD				HL,DIS_TAB
			LD				A,(HL+C)
			LD				(COM3_DATA),A
			LD				C,(LBIT)
			LD				HL,DIS_TAB
			LD				A,(HL+C)
			LD				(COM4_DATA),A
;----------------------------------COM1显示
;DIS_START:
			LD				A,(COM1_DATA)
			CALL			LEDDIS_NOW
			SET				(P0).COM1
			CALL			DIS_KEEP
			CLR				(P0).COM1
;----------------------------------com2显示
			LD				A,(COM2_DATA)
			CALL			LEDDIS_NOW
			SET				(P0).COM2
			CALL			DIS_KEEP
			CLR				(P0).COM2
;----------------------------------com3显示
			LD				A,(COM3_DATA)
			CALL			LEDDIS_NOW
			SET				(P0).COM3
			CALL			DIS_KEEP
			CLR				(P0).COM3
;----------------------------------com4显示
			LD				A,(COM4_DATA)
			CALL			LEDDIS_NOW
			SET				(P0).COM4
			CALL			DIS_KEEP
			CLR				(P0).COM4
			RET
;===========================================================
LEDDIS_NOW:
			LD				B,0X08;BIT CONT
DIS_LOOP:
			ROLC			A
			J					CC,BIT_0
			SET				(P0).LED_DAT
			J					D_LOOP1
BIT_0:
			CLR				(P0).LED_DAT
D_LOOP1:
			NOP
			NOP
			NOP
			NOP
			SET				(P3).LED_CLK
			NOP
			NOP
			NOP
			NOP
			CLR				(P3).LED_CLK
			NOP
			NOP
			NOP
			DEC				B
			J					NZ,DIS_LOOP
			RET
;===========================================================

;===========================================================
HEX2BCD:
			LD				(HBIT),0X00
			LD				A,(LBIT)
BIN1:
			CMP				A,0X0A
			J					CS,OVER
			SUB				A,0X0A
;			J					CS,OVER
			INC				(HBIT)
			J					BIN1
OVER:
;			ADD				A,0X0A
			LD				(LBIT),A
			RET
;===========================================================
DIS_KEEP:
			LD				IX,250;20000
DEC_IX:
			DEC				IX
			J					NZ,DEC_IX
			RET
		
		
;===========================================================
;===========================================================
AD_INPUT:
		LD			(ADCCR2),0X04;速率为19.5us,4mhz
		LD			(ADCCR1),0X21;选择AD通道2,单次启动
		LD			HL,TTEMP1
		LD			A,0X03;3次AD
WAIT_ADD:		
		SET			(ADCCR1).ADS;启动AD
		LD			CF,(ADCDR2).EOCF
		J				CC,WAIT_ADD;等待AD转换结束
		LD			B,(ADCDR1);读取AD结果
		SUB			B,80
		LD			(HL),B
		INC			HL
		INC			(ADCCR1)
		DEC			A
		J				NZ,WAIT_ADD
;----------------------------------	查表
FTAB:
		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
;==============================================================
DIS_TAB:
			DB				0X3F;0
			DB				0X06;1
			DB				0X5B;2			
			DB				0X4F;3
			DB				0X66;4
			DB				0X6D;5
			DB				0X7D;6
			DB				0X07;7
			DB				0X7F;8
			DB				0X6F;9
			RET
;===========================================================
DIS_TABLCD:
			DB				0y11111010;0
			DB				0y01100000;1
			DB				0y10111100;2			
			DB				0y11110100;3
			DB				0y01100110;4
			DB				0y11010110;5
			DB				0y11011110;6
			DB				0y01110000;7
			DB				0y11111110;8
			DB				0y11110110;9
DIS_TABLCD1:
			DB				0XAF;0
			DB				0X06;1
			DB				0XCB;2			
			DB				0X4F;3
			DB				0X66;4
			DB				0X6D;5
			DB				0XED;6
			DB				0X07;7
			DB				0XEF;8
			DB				0X6F;9
			end
			end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -