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

📄 light.lst

📁 系统采用SONIX单片机作为控制核心
💻 LST
📖 第 1 页 / 共 3 页
字号:
   242  000052             ;P4口初始化,设置P4口为输出口,输出为高电平,测试的时候要观察,呆会要改为低
   243  000052   2DFF(1)  	mov	a,#0ffh
   244  000053   1FD4(1)  	mov	p4,a
   245  000054   1FC4(1)  	mov	p4m,a
   246  000055             ;P5口初始化
   247  000055   2BD5(1)  	clr 	p5		;将P5口设为输出低
   248  000056   2D00(1)  	mov	a,#0
   249  000057   1FC5(1)  	mov	p5m,a
   250  000058   0E00(2)  	ret
   251  000059              /**************************************************
   252  000059               Subroutine:        init_t0                                  
   253  000059               Description:       初始化T0,采用4M的外部晶振,定时10MS                             
   254  000059               Calls:     	     N0                                              
   255  000059               Variables:         N0                                  
   256  000059               Input:             N0                                    
   257  000059               Output:            N0                                   
   258  000059             *************************************************/
   259  000059             init_t0:
   260  000059   64C9(1)  	b0bclr	ft0ien		;清定时中断
   261  00005A   67D8(1)  	b0bclr	ft0enb
   262  00005B   2D00(1)  	mov	a,#00h		;设置T0的分频数,64分频
   263  00005C   2FD8(1)  	b0mov	t0m,a
   264  00005D   2D64(1)  	mov	a,#64h		;设置T0间隔时间的初始值10MS
   265  00005E   2FD9(1)  	b0mov	t0c,a
   266  00005F   6CC9(1)  	b0bset	ft0ien
   267  000060   6FD8(1)  	b0bset  ft0enb	
   268  000061   64C8(1)  	b0bclr	ft0irq
   269  000062   0E00(2)  	ret
   270  000063             	
   271  000063             	INCLUDE		light_isr.asm
   272  000063             ;***********************************************************************************************
   273  000063             ;File name	:light_isr.asm
   274  000063             ;Author		:guangyu_yang
   275  000063             ;Purpose	:Training
   276  000063             ;Data		:2/8/2007
   277  000063             ;Dscription	:中断程序				
   278  000063             ;Version:	v1.1
   279  000063             ;Hardware&IDE:	m2 1.14
   280  000063             ;Copyright(C).SONIX TECHNOLOGY CO.,Ltd.		   
   281  000063             ;*************************************************************************************************
   282  000063             isr:
   283  000063   0204(1)  	b0xch	a,accbuf	;保存累加器的值
   284  000064   0400(1)  	push
   285  000065   5CC8(1+S)  	b0bts1	ft0irq		;是否是tc0中断
   286  000066   806B(2)  	jmp	isr90
   287  000067   64C8(1)  	b0bclr	ft0irq		;清中断请求标志位
   288  000068   690E(1)  	b0bset	ft0_10ms	;计时标志位置1
   289  000069   2D64(1)  	mov	a,#64h
   290  00006A   2FD9(1)  	b0mov	t0c,a
   291  00006B             isr90:
   292  00006B   0500(1)  	pop			;退出中断
   293  00006C   0204(1)  	b0xch	a,accbuf
   294  00006D   0F00(2)  	reti
   295  00006E             	INCLUDE		light_intgnd.asm
   296  00006E             ;***********************************************************************************************
   297  00006E             ;File name	:light_intgnd.asm
   298  00006E             ;Author		:guangyu_yang
   299  00006E             ;Purpose	:Training
   300  00006E             ;Data		:2/8/2007
   301  00006E             ;Dscription	:定时程序				
   302  00006E             ;Version:	v1.1
   303  00006E             ;Hardware&IDE:	m2 1.14
   304  00006E             ;Copyright(C).SONIX TECHNOLOGY CO.,Ltd.	
   305  00006E             ;input		ft0_10ms
   306  00006E             ;
   307  00006E             ;	delayvalbuf	   
   308  00006E             ;*************************************************************************************************
   309  00006E             
   310  00006E             mn_intgnd:
   311  00006E   590E(1+S)  	b0bts1	ft0_10ms
   312  00006F   807C(2)  	jmp	mn_intgnd90
   313  000070   610E(1)  	b0bclr	ft0_10ms
   314  000071   C0B2(2)  	call	dkeychat
   315  000072   5D0E(1+S)  	b0bts1	delayflag
   316  000073   8077(2)  	jmp	mn_intgnd10
   317  000074   650E(1)  	b0bclr	delayflag
   318  000075   1E07(1)  	mov	a,delayvalbuf
   319  000076   1F08(1)  	mov	delayvalue,a
   320  000077             mn_intgnd10:
   321  000077             
   322  000077   2608(1+S)  	decms	delayvalue
   323  000078   807C(2)  	jmp	mn_intgnd90
   324  000079   1E07(1)  	mov	a,delayvalbuf
   325  00007A   1F08(1)  	mov	delayvalue,a
   326  00007B   6C0E(1)  	b0bset	timeout 	;1S时间到了,益出
   327  00007C             mn_intgnd90:
   328  00007C   0E00(2)  	ret
   329  00007D             	INCLUDE		light_mnkey.asm
   330  00007D             ;***********************************************************************************************
   331  00007D             ;File name	:light_mnkey.asm
   332  00007D             ;Author		:guangyu_yang
   333  00007D             ;Purpose	:Training
   334  00007D             ;Data		:2/8/2007
   335  00007D             ;Dscription	:按键子程序				
   336  00007D             ;Version:	v1.1
   337  00007D             ;Hardware&IDE:	m2 1.14
   338  00007D             ;Copyright(C).SONIX TECHNOLOGY CO.,Ltd.		   
   339  00007D             ;*************************************************************************************************
   340  00007D             mn_key:
   341  00007D   C081(2)  	call	keyin		;键盘扫描程序		
   342  00007E   C085(2)  	call	keychk		;去抖处理
   343  00007F   C099(2)  	call	keycvt		;按键结果转换
   344  000080   0E00(2)  	ret
   345  000081             keyin:				
   346  000081             	
   347  000081             ;读取p1.0,p1.1,p1.2的值,存入keyinbuf
   348  000081             ;	CLR	P1M
   349  000081   1ED1(1)  	mov	a,P1	;读扫描结果
   350  000082   2A0E(1)  	and	a,#0Eh
   351  000083   1F00(1)  	mov	keyinbuf,a	;将结果存进keyinbuf中
   352  000084             
   353  000084             keyin90:
   354  000084   0E00(2)  	ret
   355  000085             /*****************************************************************
   356  000085               Subroutine:       keychk
   357  000085               Description:      去抖处理                                    
   358  000085               Output:           keycvtbuf
   359  000085             ;****************************************************************/
   360  000085             keychk:
   361  000085   1E00(1)  	mov	a,keyinbuf	;比较扫描结果和上次是否一样
   362  000086   0701(1+S)  	cmprs	a,keychkbuf	;
   363  000087   8092(2)  	jmp	keychk10	;不一样,则更新keychkbuf
   364  000088             
   365  000088             				
   366  000088             keychk00:			;每个口扫描结果都和上次一样
   367  000088   5A0E(1+S)  	b0bts1	fkey_in		;是否处于消抖中
   368  000089   8098(2)  	jmp	keychk90
   369  00008A   1E05(1)  	mov	a,keychat	;是否处理完毕
   370  00008B   0600(1+S)  	cmprs	a,#00h
   371  00008C   8098(2)  	jmp	keychk90	;没有则退出
   372  00008D             keychk01:			;处理完毕,则接下来处理这组按键结果
   373  00008D   1E00(1)  	mov	a,keyinbuf	;更新keycvtbuf
   374  00008E   2F02(1)  	b0mov	keycvtbuf,a
   375  00008F   620E(1)  	b0bclr	fkey_in		
   376  000090   6B0E(1)  	b0bset	fkeycvt
   377  000091   8098(2)  	jmp	keychk90
   378  000092             
   379  000092             keychk10:			;有键按下,准备进入消抖处理	
   380  000092   1E00(1)  	mov	a,keyinbuf
   381  000093   2F01(1)  	b0mov	keychkbuf,a
   382  000094   6A0E(1)  	b0bset	fkey_in
   383  000095   2D03(1)  	mov	a,#keydelaytime	;delay 50ms
   384  000096   2F05(1)  	b0mov	keychat,a
   385  000097   8098(2)  	jmp	keychk90
   386  000098             
   387  000098             keychk90:
   388  000098   0E00(2)  	ret
   389  000099             /*****************************************************************
   390  000099               Subroutine:       keycvt
   391  000099               Description:      将按键结果转换并存储                                     
   392  000099               Output:           keyresult
   393  000099             ;****************************************************************/
   394  000099             keycvt:
   395  000099   5B0E(1+S)  	b0bts1	fkeycvt		;是否有按键需要处理
   396  00009A   80B1(2)  	jmp	keycvt90	;没有则退出
   397  00009B   630E(1)  	b0bclr	fkeycvt		;有按键要处理,清按键处理标志位
   398  00009C   1E02(1)  	mov	a,keycvtbuf	;比较处理结果和上次是否一样
   399  00009D   0703(1+S)  	cmprs	a,keyoldbuf
   400  00009E   80A0(2)  	jmp	keycvt10	;不一样,判断是哪个BUTTON并更新keyoldbuf
   401  00009F   80B1(2)  	jmp	keycvt90	;一样则跳出
   402  0000A0             	
   403  0000A0             keycvt10:
   404  0000A0   1E02(1)  	mov 	a,keycvtbuf
   405  0000A1   060C(1+S)  	cmprs	a,#00001100b
   406  0000A2   80A5(2)  	jmp	keycvt11
   407  0000A3   2D01(1)  	mov	a,#01h
   408  0000A4   80AD(2)  	jmp	keycvt20
   409  0000A5             
   410  0000A5             keycvt11:
   411  0000A5   060A(1+S)  	cmprs	a,#00001010b
   412  0000A6   80A9(2)  	jmp	keycvt12
   413  0000A7   2D02(1)  	mov	a,#02h
   414  0000A8   80AD(2)  	jmp	keycvt20
   415  0000A9             
   416  0000A9             keycvt12:
   417  0000A9             
   418  0000A9   0606(1+S)  	cmprs	a,#00000110b
   419  0000AA   80B0(2)  	jmp	keycvt80
   420  0000AB   2D03(1)  	mov	a,#03h
   421  0000AC   80AD(2)  	jmp	keycvt20
   422  0000AD             
   423  0000AD             keycvt20:
   424  0000AD   1F06(1)  	mov	keyresult,a
   425  0000AE   1E02(1)  	mov	a,keycvtbuf	;更新keyoldbuf的值
   426  0000AF   80B1(2)  	JMP	KEYCVT90
   427  0000B0             
   428  0000B0             KEYCVT80:
   429  0000B0   2F03(1)  	b0mov	keyoldbuf,a	
   430  0000B1             keycvt90:
   431  0000B1   0E00(2)  	ret
   432  0000B2             
   433  0000B2             
   434  0000B2             dkeychat:			;按键消抖时间处理
   435  0000B2   2E05(1)  	b0mov   a,keychat
   436  0000B3             	
   437  0000B3   5086(1+S)  	b0bts0  fz		
   438  0000B4   80B8(2)  	jmp     dkeychat90	
   439  0000B5   2605(1+S)  	decms   keychat	
   440  0000B6   0000(1)  	NOP	
   441  0000B7   80B8(2)  	jmp     dkeychat90		
   442  0000B8             dkeychat90:
   443  0000B8   0E00(2)  	ret
   444  0000B9             
   445  0000B9             
   446  0000B9             
   447  0000B9             	INCLUDE		light_app.asm
   448  0000B9             ;***********************************************************************************************
   449  0000B9             ;File name	:light_main.asm
   450  0000B9             ;Author		:guangyu_yang
   451  0000B9             ;Purpose	:Training
   452  0000B9             ;Data		:2/8/2007
   453  0000B9             ;Dscription	:管理程序				
   454  0000B9             ;Version:	v1.1
   455  0000B9             ;Hardware&IDE:	m2 1.14
   456  0000B9             ;Copyright(C).SONIX TECHNOLOGY CO.,Ltd.		   
   457  0000B9             ;*************************************************************************************************
   458  0000B9             ;input	keyresult
   459  0000B9             mn_app:
   460  0000B9   1E06(1)  	mov	a,keyresult
   461  0000BA   0601(1+S)  	cmprs	a,#01h
   462  0000BB   80C3(2)  	jmp	mn_app10	;不是MODE键
   463  0000BC             	
   464  0000BC             ;///////////////////////////////////////////
   465  0000BC             ;//初始化灯的初始值
   466  0000BC             	
   467  0000BC   160C(1+S)  	incms	mode		;是MODE键,mode<------mode++
   468  0000BD   2B06(1)  	clr	keyresult
   469  0000BE   1E0C(1)  	mov	a,mode
   470  0000BF             	
   471  0000BF   0604(1+S)  	cmprs	a,#4
   472  0000C0   80CB(2)  	jmp	mn_app90	;mode!=4
   473  0000C1   2B0C(1)  	clr	mode
   474  0000C2   80CB(2)  	jmp	mn_app90
   475  0000C3             /*
   476  0000C3             ;判断是否是MODE1
   477  0000C3             mn_app01:
   478  0000C3             	mov	a,mode
   479  0000C3             	cmprs	a,#01h
   480  0000C3             	jmp	mn_app02
   481  0000C3             	b0bset	fleftled	;set the flag of shift left led
   482  0000C3             	mov	a,#01h

⌨️ 快捷键说明

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