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

📄 main.s

📁 cy8c24794单片机程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	cpu LMM
	.module main.c
	.area data(ram, con, rel)
_NUM::
	.byte 3,159
	.byte 37,13
	.byte 153,'I
	.byte 'A,31
	.byte 1,9
	.byte 17,193
	.byte 'c,133
	.byte 'a,'q
	.byte 255
	.dbfile ./main.c
	.dbsym e NUM _NUM A[17:17]c
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area data(ram, con, rel)
	.dbfile ./main.c
_weishu::
	.word 1
	.dbsym e weishu _weishu i
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area data(ram, con, rel)
	.dbfile ./main.c
_gewei::
	.word 0
	.dbsym e gewei _gewei i
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area data(ram, con, rel)
	.dbfile ./main.c
_shiwei::
	.word 0
	.dbsym e shiwei _shiwei i
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area data(ram, con, rel)
	.dbfile ./main.c
_baiwei::
	.word 0
	.dbsym e baiwei _baiwei i
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area data(ram, con, rel)
	.dbfile ./main.c
_qianwei::
	.word 0
	.dbsym e qianwei _qianwei i
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area data(ram, con, rel)
	.dbfile ./main.c
_count::
	.word 0
	.dbsym e count _count i
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area data(ram, con, rel)
	.dbfile ./main.c
_key::
	.byte 0
	.dbsym e key _key c
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area data(ram, con, rel)
	.dbfile ./main.c
_key1::
	.byte 0
	.dbsym e key1 _key1 c
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area data(ram, con, rel)
	.dbfile ./main.c
_key2::
	.byte 0
	.dbsym e key2 _key2 c
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area data(ram, con, rel)
	.dbfile ./main.c
_key3::
	.byte 0
	.dbsym e key3 _key3 c
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area data(ram, con, rel)
	.dbfile ./main.c
_key4::
	.byte 0
	.dbsym e key4 _key4 c
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area data(ram, con, rel)
	.dbfile ./main.c
_temp::
	.byte 0
	.dbsym e temp _temp c
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area data(ram, con, rel)
	.dbfile ./main.c
_times::
	.byte 0
	.dbsym e times _times c
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area data(ram, con, rel)
	.dbfile ./main.c
_time::
	.byte 0
	.dbsym e time _time c
	.area data(ram, con, rel)
	.dbfile ./main.c
	.area text(rom, con, rel)
	.dbfile ./main.c
	.dbfunc e Display _Display fV
_Display::
	.dbline -1
	.dbline 27
; //----------------------------------------------------------------------------
; // C main line
; //----------------------------------------------------------------------------
; 
; #include <m8c.h>        // part specific constants and macros
; #include "PSoCAPI.h"    // PSoC API definitions for all User Modules
; #pragma interrupt_handler  Timer8
; #pragma interrupt_handler  Keyscan
; #pragma interrupt_handler  Timer16
; 
; #define LED1  0B11111110  
; #define LED2  0B11111101 
; #define LED3  0B11111011
; #define LED4  0B11110111 
; 
; #define SELECT  PRT4DR 
; #define DATA    PRT3DR 
; 
; BYTE NUM[17] = {0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x11,0xc1,0x63,0x85,0x61,0x71,0xff};
; 
; WORD  weishu = 1  ,  gewei = 0  ,  shiwei = 0 , baiwei = 0 , qianwei = 0 , count = 0 ;  
; BYTE  key = 0 ,  key1 = 0 , key2 = 0 , key3 = 0 , key4 = 0 , temp = 0 ; 
; BYTE  times = 0  ; 
; BYTE  time =  0 ; 
; 
; void Display() 
; {
	.dbline 28
; 	switch( weishu )
	mov REG[0xd0],>_weishu
	cmp [_weishu],0
	jnz X1
	cmp [_weishu+1],1
	jz L4
X1:
	mov REG[0xd0],>_weishu
	cmp [_weishu],0
	jnz X2
	cmp [_weishu+1],2
	jz L7
X2:
	mov REG[0xd0],>_weishu
	cmp [_weishu],0
	jnz X3
	cmp [_weishu+1],3
	jz L8
X3:
	mov REG[0xd0],>_weishu
	cmp [_weishu],0
	jnz X4
	cmp [_weishu+1],4
	jz L9
X4:
	xjmp L3
X0:
	.dbline 29
; 	{
L4:
	.dbline 31
; 	  case 1 :
; 	     if( (count/200) % 2 == 0 )
	mov REG[0xd0],>_count
	mov A,0
	push A
	mov A,-56
	push A
	mov A,[_count]
	push A
	mov A,[_count+1]
	push A
	mov REG[0xd0],>__r0
	xcall __divmodu_16X16_16
	pop A
	mov [__r1],A
	pop A
	mov [__r0],A
	add SP,-2
	and [__r1],1
	and [__r0],0
	cmp [__r0],0
	jnz L5
	cmp [__r1],0
	jnz L5
X5:
	.dbline 32
; 	         {
	.dbline 33
; 	          SELECT = LED4 ; 
	mov REG[0x10],-9
	.dbline 34
; 	          DATA = NUM[gewei] ; 
	mov REG[0xd0],>_gewei
	mov A,[_gewei+1]
	add A,<_NUM
	mov REG[0xd0],>__r0
	mov [__r1],A
	mov REG[0xd0],>_gewei
	mov A,[_gewei]
	adc A,>_NUM
	mov REG[0xd0],>__r0
	mov REG[0xd4],A
	mvi A,[__r1]
	mov REG[0xc],A
	.dbline 35
; 	          break ; 
	xjmp L3
L5:
L7:
	.dbline 38
; 	          }
; 	  case 2 : 
; 	  		  SELECT = LED3 ; 
	mov REG[0x10],-5
	.dbline 39
; 	  		  DATA = NUM[shiwei] ; 
	mov REG[0xd0],>_shiwei
	mov A,[_shiwei+1]
	add A,<_NUM
	mov REG[0xd0],>__r0
	mov [__r1],A
	mov REG[0xd0],>_shiwei
	mov A,[_shiwei]
	adc A,>_NUM
	mov REG[0xd0],>__r0
	mov REG[0xd4],A
	mvi A,[__r1]
	mov REG[0xc],A
	.dbline 40
; 	  		  break ;
	xjmp L3
L8:
	.dbline 42
; 	  case 3 : 
; 	          SELECT = LED2 ; 
	mov REG[0x10],-3
	.dbline 43
; 	          DATA = NUM[baiwei] & 0B11111110 ; 
	mov REG[0xd0],>_baiwei
	mov A,[_baiwei+1]
	add A,<_NUM
	mov REG[0xd0],>__r0
	mov [__r1],A
	mov REG[0xd0],>_baiwei
	mov A,[_baiwei]
	adc A,>_NUM
	mov REG[0xd0],>__r0
	mov REG[0xd4],A
	mvi A,[__r1]
	mov [__r0],A
	and [__r0],-2
	mov A,[__r0]
	mov REG[0xc],A
	.dbline 44
; 	          break ; 
	xjmp L3
L9:
	.dbline 46
; 	  case 4 :
; 	  		  SELECT = LED1 ; 
	mov REG[0x10],-2
	.dbline 47
; 	  		  DATA = NUM[qianwei] ; 
	mov REG[0xd0],>_qianwei
	mov A,[_qianwei+1]
	add A,<_NUM
	mov REG[0xd0],>__r0
	mov [__r1],A
	mov REG[0xd0],>_qianwei
	mov A,[_qianwei]
	adc A,>_NUM
	mov REG[0xd0],>__r0
	mov REG[0xd4],A
	mvi A,[__r1]
	mov REG[0xc],A
	.dbline 48
; 	  		  break ; 
	.dbline 50
; 	  default : 
; 	          break ; 
L3:
	.dbline 52
	mov REG[0xd0],>_weishu
	inc [_weishu+1]
	adc [_weishu],0
	.dbline 53
	cmp [_weishu],0
	jnz L10
	cmp [_weishu+1],5
	jnz L10
X6:
	.dbline 54
	mov REG[0xd0],>_weishu
	mov [_weishu+1],0
	mov [_weishu],0
L10:
	.dbline -2
	.dbline 55
; 	} 
; 	weishu ++ ; 
; 	if( weishu == 5 )
; 	       weishu  =  0 ; 
; }
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Display_Key _Display_Key fV
_Display_Key::
	.dbline -1
	.dbline 58
; 
; void Display_Key()
; {
	.dbline 59
;   count ++ ; 
	mov REG[0xd0],>_count
	inc [_count+1]
	adc [_count],0
	.dbline 60
;   if( (count/200) % 2 == 0 && times != 0 )
	mov A,0
	push A
	mov A,-56
	push A
	mov A,[_count]
	push A
	mov A,[_count+1]
	push A
	mov REG[0xd0],>__r0
	xcall __divmodu_16X16_16
	pop A
	mov [__r1],A
	pop A
	mov [__r0],A
	add SP,-2
	and [__r1],1
	and [__r0],0
	cmp [__r0],0
	jnz L13
	cmp [__r1],0
	jnz L13
X8:
	mov REG[0xd0],>_times
	cmp [_times],0
	jz L13
	.dbline 61
;   {
	.dbline 62
; 	   switch( weishu )
	mov REG[0xd0],>_weishu
	cmp [_weishu],0
	jnz X9
	cmp [_weishu+1],1
	jz L17
X9:
	mov REG[0xd0],>_weishu
	cmp [_weishu],0
	jnz X10
	cmp [_weishu+1],2
	jz L18
X10:
	mov REG[0xd0],>_weishu
	cmp [_weishu],0
	jnz X11
	cmp [_weishu+1],3
	jz L19
X11:
	mov REG[0xd0],>_weishu
	cmp [_weishu],0
	jnz X12
	cmp [_weishu+1],4
	jz L20
X12:
	xjmp L14
X7:
	.dbline 63
; 	   {
L17:
	.dbline 65
; 	     case 1 :
; 	              SELECT = LED4 ; 
	mov REG[0x10],-9
	.dbline 66
; 	              DATA = NUM[key1] ;  
	mov REG[0xd0],>_key1
	mov A,[_key1]
	mov REG[0xd0],>__r0
	mov [__r1],A
	mov [__r0],0
	add [__r1],<_NUM
	adc [__r0],>_NUM
	mov A,[__r0]
	mov REG[0xd4],A
	mvi A,[__r1]
	mov REG[0xc],A
	.dbline 67
; 	              break ; 
	xjmp L14
L18:
	.dbline 69
; 	     case 2 : 
; 	     		  SELECT = LED3 ;
	mov REG[0x10],-5
	.dbline 70
; 	     		  DATA = NUM[key2] ; 
	mov REG[0xd0],>_key2
	mov A,[_key2]
	mov REG[0xd0],>__r0
	mov [__r1],A
	mov [__r0],0
	add [__r1],<_NUM
	adc [__r0],>_NUM
	mov A,[__r0]
	mov REG[0xd4],A
	mvi A,[__r1]
	mov REG[0xc],A
	.dbline 71
; 	     		  break ; 
	xjmp L14
L19:
	.dbline 73
; 	     case 3 : 
; 	              SELECT = LED2 ;
	mov REG[0x10],-3
	.dbline 74
; 	              DATA = NUM[key3] & 0B11111110 ; 
	mov REG[0xd0],>_key3
	mov A,[_key3]
	mov REG[0xd0],>__r0
	mov [__r1],A
	mov [__r0],0
	add [__r1],<_NUM
	adc [__r0],>_NUM
	mov A,[__r0]
	mov REG[0xd4],A
	mvi A,[__r1]
	mov [__r0],A
	and [__r0],-2
	mov A,[__r0]
	mov REG[0xc],A
	.dbline 75
; 	              break ; 
	xjmp L14
L20:
	.dbline 77
; 	     case 4 : 
; 	     		  SELECT = LED1 ; 
	mov REG[0x10],-2
	.dbline 78
; 	     		  DATA = NUM[key4] ;
	mov REG[0xd0],>_key4
	mov A,[_key4]
	mov REG[0xd0],>__r0
	mov [__r1],A
	mov [__r0],0
	add [__r1],<_NUM
	adc [__r0],>_NUM
	mov A,[__r0]
	mov REG[0xd4],A
	mvi A,[__r1]
	mov REG[0xc],A
	.dbline 79
; 	     		  break ;  
	.dbline 81
; 	     default :
; 	            break ; 
	.dbline 83
; 	   }
;    }
	xjmp L14
L13:
	.dbline 85
	.dbline 86
	mov REG[0xd0],>_key1
	mov A,[_key1]
	push A
	mov REG[0xd0],>_qianwei
	mov [_qianwei],0
	pop A
	mov [_qianwei+1],A
	.dbline 87
	mov REG[0xd0],>_key2
	mov A,[_key2]
	push A
	mov REG[0xd0],>_baiwei
	mov [_baiwei],0
	pop A
	mov [_baiwei+1],A
	.dbline 88
	mov REG[0xd0],>_key3
	mov A,[_key3]
	push A
	mov REG[0xd0],>_shiwei
	mov [_shiwei],0
	pop A
	mov [_shiwei+1],A
	.dbline 89
	mov REG[0xd0],>_key4
	mov A,[_key4]
	push A
	mov REG[0xd0],>_gewei
	mov [_gewei],0
	pop A
	mov [_gewei+1],A
	.dbline 90
	push X
	xcall _Timer16_Stop
	pop X
	.dbline 91
	mov REG[0xd0],>_count
	mov [_count+1],0
	mov [_count],0
	.dbline 92
	push X
	xcall _Timer8_Start
	pop X
	.dbline 93
L14:
	.dbline -2
	.dbline 94
;    else 
;    {
;      qianwei = key1 ; 
;      baiwei = key2 ; 
;      shiwei = key3 ; 
;      gewei = key4 ; 
;      Timer16_Stop() ; 
;      count = 0 ; 
;      Timer8_Start() ; 
;    }
; }
L12:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Timer8 _Timer8 fV
_Timer8::
	.dbline -1
	or F,-64
	push A
	mov A,REG[0xd0]
	push A
	mov A,REG[0xd3]
	push A
	mov A,REG[0xd4]
	push A
	mov A,REG[0xd5]
	push A
	mov REG[0xd0],>__r0
	mov A,[__r0]
	push A
	mov A,[__r1]
	push A
	mov A,[__r2]
	push A
	mov A,[__r3]
	push A
	mov A,[__r4]
	push A
	mov A,[__r5]
	push A
	mov A,[__r6]
	push A
	mov A,[__r7]
	push A
	mov A,[__r8]
	push A
	mov A,[__r9]
	push A
	mov A,[__r10]
	push A
	mov A,[__r11]
	push A
	mov A,[__rX]
	push A
	mov A,[__rY]
	push A
	mov A,[__rZ]
	push A
	.dbline 97
; 
; void Timer8() 
; {
	.dbline 98
; 	count ++ ; 
	mov REG[0xd0],>_count
	inc [_count+1]
	adc [_count],0
	.dbline 99
; 	if( count == 24000 )
	cmp [_count],93
	jnz L22
	cmp [_count+1],-64
	jnz L22
X13:
	.dbline 100
; 	{
	.dbline 101
; 	  gewei ++ ; 
	mov REG[0xd0],>_gewei
	inc [_gewei+1]
	adc [_gewei],0
	.dbline 102
; 	    if( gewei == 10 )
	cmp [_gewei],0
	jnz L24
	cmp [_gewei+1],10
	jnz L24
X14:
	.dbline 103
; 	    {
	.dbline 104
; 	        gewei = 0 ; 
	mov REG[0xd0],>_gewei
	mov [_gewei+1],0
	mov [_gewei],0
	.dbline 105
; 	        shiwei ++ ; 
	mov REG[0xd0],>_shiwei
	inc [_shiwei+1]
	adc [_shiwei],0
	.dbline 106
; 	         if( shiwei == 6 )
	cmp [_shiwei],0
	jnz L26
	cmp [_shiwei+1],6
	jnz L26
X15:
	.dbline 107
; 	             {
	.dbline 108
; 	                 shiwei = 0 ; 
	mov REG[0xd0],>_shiwei
	mov [_shiwei+1],0
	mov [_shiwei],0
	.dbline 110
; 	                 
; 	                 baiwei ++ ; 
	mov REG[0xd0],>_baiwei
	inc [_baiwei+1]
	adc [_baiwei],0
	.dbline 111
; 	                   if( baiwei == 10 )
	cmp [_baiwei],0
	jnz L28
	cmp [_baiwei+1],10
	jnz L28
X16:
	.dbline 112
; 	                   {
	.dbline 113
; 	                       baiwei = 0 ; 
	mov REG[0xd0],>_baiwei
	mov [_baiwei+1],0
	mov [_baiwei],0
	.dbline 114
; 	                       qianwei ++ ; 
	mov REG[0xd0],>_qianwei
	inc [_qianwei+1]
	adc [_qianwei],0
	.dbline 115
; 	                       if( qianwei == 6 )
	cmp [_qianwei],0
	jnz L30
	cmp [_qianwei+1],6
	jnz L30
X17:
	.dbline 116
; 	                       {
	.dbline 117
; 	                          qianwei = 0 ; 
	mov REG[0xd0],>_qianwei
	mov [_qianwei+1],0
	mov [_qianwei],0
	.dbline 118
; 	                          baiwei = 0 ; 
	mov REG[0xd0],>_baiwei
	mov [_baiwei+1],0
	mov [_baiwei],0
	.dbline 119
; 	                          shiwei = 0 ; 
	mov REG[0xd0],>_shiwei
	mov [_shiwei+1],0
	mov [_shiwei],0
	.dbline 120
; 	                          gewei = 0 ; 
	mov REG[0xd0],>_gewei
	mov [_gewei+1],0
	mov [_gewei],0
	.dbline 121
; 	                       }
L30:
	.dbline 122
; 	                   }
L28:
	.dbline 123
; 	             }
L26:
	.dbline 124
; 	    }
L24:
	.dbline 125
; 	  count = 0 ; 
	mov REG[0xd0],>_count
	mov [_count+1],0
	mov [_count],0
	.dbline 126
; 	}
L22:
	.dbline 127
; 	Display() ;
	xcall _Display
	.dbline -2
	.dbline 128
; }
L21:
	mov REG[0xD0],>__r0
	pop A
	mov [__rZ],A
	pop A
	mov [__rY],A
	pop A
	mov [__rX],A
	pop A
	mov [__r11],A
	pop A
	mov [__r10],A
	pop A
	mov [__r9],A
	pop A
	mov [__r8],A
	pop A
	mov [__r7],A

⌨️ 快捷键说明

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