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

📄 main.lst

📁 实现彩色LED灯变换控制
💻 LST
📖 第 1 页 / 共 3 页
字号:
    63 0003A 1C01          	retl	@INCR			;1
    64 0003B 1C00          	retl	@DECR			;2
    65 0003C 1C01          	retl	@INCR			;3
    66 0003D 1C00          	retl	@DECR			;4
    67 0003E 1C01          	retl	@INCR			;5
    68 0003F 1C00          	retl	@DECR			;6
    69 00040 1C02          	retl	@EMPTY		   ;7
    70 00041 1C01          	retl	@INCR			;8
    71 00042 1C04          	retl	@FULL			;9
    72 00043 1C00          	retl	@DECR			;10
    73                     
    74 00044               DispMode_Table:
    75 00044 03C2          	add	 PC,A
    76 00045 0000          	nop
    77 00046 15B7          	jmp	 DispMode_1	   ;R
    78 00047 15BE          	jmp	 DispMode_2	   ;G
    79 00048 15C5          	jmp	 DispMode_3	   ;B
    80 00049 15CC          	jmp	 DispMode_4	   ;R+G
    81 0004A 15D3          	jmp	 DispMode_5	   ;R+B
    82 0004B 15DA          	jmp	 DispMode_6	   ;G+B
    83 0004C 15E1          	jmp	 DispMode_7	   ;R+G+B
    84 0004D 15E8          	jmp	 DispMode_8	   ;OFF
    85                     
    86                     	ORG	0x060
    87 00060               Start:
    88 00060 0011          	disi
    89 00061 1800          	mov	A,@00000000B
    90 00062 0002          	contw
    91 00063 180F          	mov	A,@00001111B
    92 00064 0005          	iow	IOC5
    93 00065 1881          	mov	A,@10000001B
    94 00066 0006          	iow	IOC6
    95 00067 1877          	mov	A,@01110111B
    96 00068 000B          	iow	IOCB
    97 00069 18F7          	mov	A,@11110111B
    98 0006A 000C          	iow	IOCC
    99 0006B 1800          	mov	A,@00000000B
   100 0006C 000D          	iow	IOCD
   101 0006D 1800          	mov	A,@00000000B	;P60 As I/O
   102 0006E 000E          	iow	IOCE
   103 0006F 1801          	mov	A,@00000001B	;Bit2-EXIE , Bit1-ICIE , Bit0-TCIE
   104 00070 000F          	iow	IOCF
   105 00071 00CF          	clr	RF
   106 00072 18FF          	mov	A,@11111111B
   107 00073 0045          	mov	R5,A	
   108 00074 0046          	mov	R6,A
   109 00075 1800          	mov	A,@0x00
   110 00076 0041          	mov	TCC,A
   111 00077 00E2          	clr	IR_Status
   112 00078 00E0          	clr	TimeCnt
   113 00079 1878          	mov	A,@120
   114 0007A 005C          	mov	Duty_RED,A
   115 0007B 1800          	mov	A,@0
   116 0007C 005D          	mov	Duty_GREEN,A
   117 0007D 1800          	mov	A,@0
   118 0007E 005E          	mov	Duty_BLUE,A
   119 0007F 1800          	mov	A,@DECR
   120 00080 0057          	mov	Red_Dirct,A
   121 00081 1801          	mov	A,@INCR
   122 00082 0058          	mov	Green_Dirct,A
   123 00083 1802          	mov	A,@EMPTY
   124 00084 0059          	mov	Blue_Dirct,A
   125 00085 00D1          	clr	Count
   126 00086 00D5          	clr	Mode
   127 00087 00DB          	clr	CntDirct_l
   128 00088 00DA          	clr	CntDirct_h
   129 00089 00D3          	clr	DispMode
   130 0008A 00D2          	clr	Flag
   131 0008B 0010          	eni
   132 0008C               MainLoop:
   133 0008C 10F3          	call   IR_Service
   134 0008D               Check_Power_IR:
   135 0008D 0E92          	jbs	Flag, POWER_VALID
   136 0008E 149C          	jmp	Check_LED_Mode
   137 0008F 0892          	bc	 Flag, POWER_VALID
   138 00090 0ED2          	jbs	Flag, POWEROFF
   139 00091 1496          	jmp	$+5
   140 00092 08D2          	bc 	Flag, POWEROFF		;POWER ON
   141 00093 042D          	mov	A,DispMode_Bak
   142 00094 0053          	mov	DispMode,A
   143 00095 14A4          	jmp	To_New_Disp_Mode
   144 00096 0AD2          	bs	 Flag, POWEROFF		;POWER OFF
   145 00097 0413          	mov	A,DispMode
   146 00098 006D          	mov	DispMode_Bak,A
   147 00099 1808          	mov	A,@8
   148 0009A 0053          	mov	DispMode,A
   149 0009B 14A4          	jmp	To_New_Disp_Mode
   150 0009C               Check_LED_Mode:
   151 0009C 0E12          	jbs	Flag, IR_VALID
   152 0009D 14AA          	jmp	Check_Counter
   153 0009E 0812          	bc	 Flag, IR_VALID
   154                     ;	jbc	Flag, POWEROFF
   155                     ;	jmp	Check_Counter
   156 0009F 0553          	inc	DispMode
   157 000A0 0413          	mov	A,DispMode
   158 000A1 1D08          	sub	A,@9-1
   159 000A2 0E03          	jbs	STATUS, C
   160 000A3 00D3          	clr	DispMode
   161 000A4               To_New_Disp_Mode:
   162 000A4 0413          	mov	A,DispMode
   163 000A5 0C83          	jbc	STATUS, Z
   164 000A6 14AA          	jmp	Check_Counter
   165 000A7 0413          	mov	A,DispMode
   166 000A8 1044          	call   DispMode_Table
   167 000A9 148C          	jmp	MainLoop
   168 000AA               Check_Counter:
   169 000AA 0413          	mov	A,DispMode
   170 000AB 0E83          	jbs	STATUS, Z
   171 000AC 148C          	jmp	MainLoop
   172 000AD 10AF          	call   Update_Counter
   173 000AE 148C          	jmp	MainLoop
   174                     
   175                     ;-----------------------------------------------------
   176                     ;Subroutines
   177                     ;-----------------------------------------------------
   178 000AF               Update_Counter:
   179 000AF 0E52          	jbs	Flag, TCC100US
   180 000B0 0012          	ret
   181 000B1 0852          	bc	 Flag, TCC100US
   182 000B2               Detect_Mode_Cnt:
   183 000B2 055B          	inc	CntDirct_l
   184 000B3 041B          	mov	A,CntDirct_l
   185 000B4 1DB4          	sub	A,@180
   186 000B5 0C03          	jbc	STATUS, C
   187 000B6 14B9          	jmp	Detect_Red_Cnt
   188 000B7 00DB          	clr	CntDirct_l
   189 000B8 1177          	call	Next_Dirct
   190                     
   191 000B9               Detect_Red_Cnt:
   192 000B9 05EA          	djz	CntPWM_RED
   193 000BA 14CC          	jmp	Detect_Green_Cnt
   194                   M 	LEFT_RED_ON_SKIP
       000BB 0CC6     1     JBC  R6 , 3 
   195 000BC 14C6          	jmp	Turn_Left_Red_On
   196 000BD               Turn_Left_Red_Off:
   197 000BD 041C          	mov	A,Duty_RED
   198 000BE 1D77          	sub	A,@120-1
   199 000BF 0E03          	jbs	STATUS, C
   200 000C0 14C6          	jmp	Turn_Left_Red_On
   201 000C1 006A          	mov	CntPWM_RED,A
   202 000C2 056A          	inc	CntPWM_RED
   203                   M 	SET_LEFT_RED_OFF
       000C3 0AC6     1     BS  R6 , 3 
   204                   M 	SET_RIGHT_RED_OFF
       000C4 0B06     1     BS  R6 , 4 
   205 000C5 14CC          	jmp	Detect_Green_Cnt
   206 000C6               Turn_Left_Red_On:
   207 000C6 041C          	mov	A,Duty_RED
   208 000C7 0C83          	jbc	STATUS, Z
   209 000C8 14BD          	jmp	Turn_Left_Red_Off
   210 000C9 006A          	mov	CntPWM_RED,A
   211                   M 	SET_LEFT_RED_ON
       000CA 08C6     1     BC  R6 , 3 
   212                   M 	SET_RIGHT_RED_ON
       000CB 0906     1     BC  R6 , 4 
   213                     
   214 000CC               Detect_Green_Cnt:
   215 000CC 05EB          	djz	CntPWM_GREEN
   216 000CD 14DF          	jmp	Detect_Blue_Cnt
   217                   M 	LEFT_GREEN_ON_SKIP
       000CE 0C86     1     JBC  R6 , 2 
   218 000CF 14D9          	jmp	Turn_Left_Green_On
   219 000D0               Turn_Left_Green_Off:
   220 000D0 041D          	mov	A,Duty_GREEN
   221 000D1 1D77          	sub	A,@120-1
   222 000D2 0E03          	jbs	STATUS, C
   223 000D3 14D9          	jmp	Turn_Left_Green_On
   224 000D4 006B          	mov	CntPWM_GREEN,A
   225 000D5 056B          	inc	CntPWM_GREEN
   226                   M 	SET_LEFT_GREEN_OFF
       000D6 0A86     1     BS  R6 , 2 
   227                   M 	SET_RIGHT_GREEN_OFF
       000D7 0B46     1     BS  R6 , 5 
   228 000D8 14DF          	jmp	Detect_Blue_Cnt
   229 000D9               Turn_Left_Green_On:
   230 000D9 041D          	mov	A,Duty_GREEN
   231 000DA 0C83          	jbc	STATUS, Z
   232 000DB 14D0          	jmp	Turn_Left_Green_Off
   233 000DC 006B          	mov	CntPWM_GREEN,A
   234                   M 	SET_LEFT_GREEN_ON
       000DD 0886     1     BC  R6 , 2 
   235                   M 	SET_RIGHT_GREEN_ON
       000DE 0946     1     BC  R6 , 5 
   236                     
   237 000DF               Detect_Blue_Cnt:
   238 000DF 05EC          	djz	CntPWM_BLUE
   239 000E0 0012          	ret
   240                   M 	LEFT_BLUE_ON_SKIP
       000E1 0C46     1     JBC  R6 , 1 
   241 000E2 14EC          	jmp	Turn_Left_Blue_On
   242 000E3               Turn_Left_Blue_Off:
   243 000E3 041E          	mov	A,Duty_BLUE
   244 000E4 1D77          	sub	A,@120-1
   245 000E5 0E03          	jbs	STATUS, C
   246 000E6 14EC          	jmp	Turn_Left_Blue_On
   247 000E7 006C          	mov	CntPWM_BLUE,A
   248 000E8 056C          	inc	CntPWM_BLUE
   249                   M 	SET_LEFT_BLUE_OFF
       000E9 0A46     1     BS  R6 , 1 
   250                   M 	SET_RIGHT_BLUE_OFF
       000EA 0B86     1     BS  R6 , 6 
   251 000EB 0012          	ret
   252 000EC               Turn_Left_Blue_On:
   253 000EC 041E          	mov	A,Duty_BLUE
   254 000ED 0C83          	jbc	STATUS, Z
   255 000EE 14E3          	jmp	Turn_Left_Blue_Off
   256 000EF 006C          	mov	CntPWM_BLUE,A
   257                   M 	SET_LEFT_BLUE_ON
       000F0 0846     1     BC  R6 , 1 
   258                   M 	SET_RIGHT_BLUE_ON
       000F1 0986     1     BC  R6 , 6 
   259 000F2 0012          	ret
   260                     ;-----------------------------------------------------
   261                     ;-----------------------------------------------------
   262 000F3               IR_Service:
   263 000F3 0422          	mov	A,IR_Status
   264 000F4 0C83          	jbc	STATUS, Z
   265 000F5 14FE          	jmp	IR_Wait_Now
   266 000F6 0C22          	jbc    IR_Status, IR_HEAD_LOW
   267 000F7 1504          	jmp	IR_Head_Low_Now
   268 000F8 0C62          	jbc    IR_Status, IR_HEAD_HIGH
   269 000F9 1512          	jmp	IR_Head_High_Now
   270 000FA 0CA2          	jbc    IR_Status, IR_DATA_LOW
   271 000FB 1526          	jmp	IR_Data_Low_Now
   272 000FC 0CE2          	jbc    IR_Status, IR_DATA_HIGH
   273 000FD 1534          	jmp	IR_Data_High_Now
   274 000FE               IR_Wait_Now:
   275                   M 	IR_LOW_SKIP
       000FE 0DC6     1     JBC  R6 , 7 
   276 000FF 0012          	ret
   277 00100 0406          	mov	A,R6
   278 00101 0A22          	bs	 IR_Status, IR_HEAD_LOW
   279 00102 00E0              clr    TimeCnt
   280 00103 0012          	ret
   281 00104               IR_Head_Low_Now:
   282 00104 0420          	mov	A,TimeCnt
   283 00105 1D64          	sub	A,@IR_HEAD_LOWMAX
   284 00106 0E03          	jbs	STATUS, C
   285 00107 1574          	jmp	Error_Data_Proc
   286                   M 	IR_HIGH_SKIP
       00108 0FC6     1     JBS  R6 , 7 
   287 00109 0012          	ret
   288 0010A 0420          	mov	A,TimeCnt
   289 0010B 1D3C          	sub	A,@IR_HEAD_LOWMIN
   290 0010C 0C03          	jbc	STATUS, C
   291 0010D 1574          	jmp	Error_Data_Proc
   292 0010E 00E2          	clr	IR_Status
   293 0010F 0A62          	bs	 IR_Status, IR_HEAD_HIGH
   294 00110 00E0          	clr	TimeCnt
   295 00111 0012          	ret
   296 00112               IR_Head_High_Now:
   297 00112 0420          	mov	A,TimeCnt
   298 00113 1D32          	sub	A,@IR_HEAD_HIGHMAX
   299 00114 0E03          	jbs	STATUS, C
   300 00115 1574          	jmp	Error_Data_Proc
   301                   M 	IR_LOW_SKIP
       00116 0DC6     1     JBC  R6 , 7 
   302 00117 0012          	ret
   303 00118 0420          	mov	A,TimeCnt
   304 00119 1D1E          	sub	A,@IR_HEAD_HIGHMIN
   305 0011A 0C03          	jbc	STATUS, C
   306 0011B 1574          	jmp	Error_Data_Proc
   307 0011C 00E2          	clr	IR_Status
   308 0011D 0AA2          	bs	 IR_Status, IR_DATA_LOW
   309 0011E 00E0          	clr	TimeCnt
   310 0011F 1820          	mov	A,@32
   311 00120 0061          	mov	IRNum,A
   312 00121 00E3          	clr	IRCode_E
   313 00122 00E4          	clr	IRCode_H
   314 00123 00E5          	clr	IRCode_M
   315 00124 00E6          	clr	IRCode_L
   316 00125 0012          	ret
   317 00126               IR_Data_Low_Now:
   318 00126 0420          	mov	A,TimeCnt
   319 00127 1D08          	sub	A,@IR_DATA_LOWMAX
   320 00128 0E03          	jbs	STATUS, C
   321 00129 1574          	jmp	Error_Data_Proc

⌨️ 快捷键说明

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