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

📄 07_08.lst

📁 一个16LED显示的双路马达驱动电路图
💻 LST
📖 第 1 页 / 共 4 页
字号:
     1                     /*
     2                     	AV_2451	双路马达
     3                     	备注:
     4                     	1;电源部分没有加放电电阻,会造成掉电时电压下不去,RAM无法清除,上电便开机运行
     5                     	2;软件中断中所做功能过多,造成中断不准确,后续软件需要改善
     6                     	3;创建日期OCT 18 08
     7                     	4; 731F
     8                     	
     9                     	JASON	HUANG
    10                     */
    11                     	
    12       0000          R0			==		0X00
    13       0001          TCC			==		0X01
    14       0002          PC			==		0X02
    15       0003          STATUS		==		0X03
    16       0002             Z		==		2
    17       0000             C		==		0
    18       0004          RSR			==		0X04
    19       0005          PORT5		==		0X05
    20       0006          PORT6		==		0X06
    21       000D          RD			==		0X0D
    22       000E          WPC			==		0X0E
    23       000F          ISR			==		0X0F
    24       0000            TCIF		==		0
    25                     
    26       0005          P5CR		==		0X05
    27       0006          P6CR		==		0X06
    28       000A          PCR			==		0X0A
    29       000B          PDCR		==		0X0B
    30       000C          ODCR		==		0X0C
    31       000D          PHCR		==		0X0D		
    32       000E          WDTCR		==		0X0E		
    33       000F          IMR			==		0X0F
    34                     
    35                     ;R10-R1F and R20-R3F is general purpose register
    36       0010          TEMP		==		0X10			;use for clean genernal registers
    37       0011          ACC_BUF		==		0X11
    38       0012          R3_BUF		==		0X12
    39       0013          R4_BUF		==		0X13
    40       0014          R6_BUF		==		0X14
    41       0015          R5_BUF		==		0X15
    42       0002            CONT1_L	==		2		;CONT1+			G+
    43       0001            CONT2_L	==		1		;CONT1-			G-	
    44       0003            CONT1_R	==		3		;CONT2+			M+
    45       0004            CONT2_R	==		4		;CONT2-			M-
    46       0016          R6_REG		==		0X16	;save the port6 data in keyswitch
    47       0017          FLAG0		==		0X17	
    48       0000            KEY_LONG  ==		0		;long keypress flag
    49       0001            TURNL_FLAG==		1		;left motor turner flag
    50       0002            TURNR_FLAG==		2		;right motor turner flag
    51       0003            DYONL_FLAG==		3		;left motor on/off timer flag 7/18 8/18 9/18...14/18 0=on 1=off
    52       0004            DYONR_FLAG==		4		;right motor on/off timer flag	2/12 3/12 4/12...9/12
    53       0018          FLAG1		==		0X18
    54       0000            MOTORL_ON	==		0		;left motor on/off falg
    55       0001            MOTORR_ON	==		1
    56       0002            MID_MID_FLAG	==	2
    57       0003            MID_DOWN_FLAG	==	3
    58       0019          FLAG_1MS	==		0X19	;TCC interrupter count flag
    59       001A          REGL_18MS	==		0X1A	;the 18ms register use in left motor play
    60       001B          REGR_18MS	==		0X1B	;the 18ms register use in right motor play
    61       001C          REG_1MS		==		0X1C	
    62       001D          REG_10MS	==		0X1D	;10ms count flag use in 30ms count
    63       001E          REG_30MS	==		0X1E	;30ms timer led display use in mode2 30ms*2
    64       001F          FLAG_30MS	==		0X1F	;30ms in mode3
    65       0020          KEYTIME_L	==		0X20	;count the left keypress timedelay for long keypress_on
    66       0021          KEYTIME_R	==		0X21
    67       0022          SPEED_L		==		0X22	;left motor speed
    68       0023          SPEED_R		==		0X23
    69       0024          LED_DUTY	==		0X24	;led dispaly duty p60,p61,p62,p63
    70       0025          MODE		==		0X25	;motor work mode
    71       0026          SPEEDL_DUTY	==		0X26	;left led display duty use in mode2
    72       0027          SPEEDL_FLAG	==		0X27	;left the mode2 led display duty from 1 to 8 or 8 to 1
    73       0028          SPEEDR_DUTY	==		0X28
    74       0029          SPEEDR_FLAG	==		0X29
    75       002A          DELAY		==		0X2A	;delay for keytest
    76       002B          DELAY_ON_L	==		0X2B	;left motor on timer  in one cycle
    77       002C          DELAY_OFF_L	==		0X2C	;the whole cycle timer
    78       002D          DELAY_ON_R	==		0X2D	;right motor on timer
    79       002E          DELAY_OFF_R	==		0X2E	;the whole cycle timer
    80       002F          POSL_REG	==		0X2F	;the  left cycle timer in mode2 and mode3 
    81       0030          NEV_REG		==		0X30	;the motor close timer in one  cycle
    82       0031          POSR_REG	==		0X31	;the right cycle timer
    83       0032          POWERTEST1	==		0X32	;powertest1
    84       0033          POWERTEST2	==		0X33	;powertest2
    85       0034          SLEEP_FLAG	==		0X34	;200MS then sleep
    86       0035          SLEEP_STATE	==		0X35
    87       0036          R6_REG1		==		0X36
    88       0037          R6_REG2		==		0X37
    89       0038          KEY_FLAG	==		0X38
    90       0000            S1_FLAG	==		0
    91       0001            S2_FLAG	==		1
    92       0002            S3_FLAG	==		2
    93       0003            S4_FLAG	==		3
    94       0004            S5_FLAG	==		4
    95       0005            S6_FLAG	==		5
    96       0006            S8_FLAG	==		6
    97       0039          KEY_STATE	==		0X39
    98       0000            S1_STATE	==		0
    99       0001            S2_STATE	==		1
   100       0002            S3_STATE	==		2
   101       0003            S4_STATE	==		3
   102       0004            S5_STATE	==		4
   103       0005            S6_STATE	==		5
   104       0006            S8_STATE	==		6
   105                     
   106                     
   107                     ;********************************PROCESS START
   108                     		ORG		000H    
   109 00000 0000          		NOP
   110 00001 0000          		NOP
   111 00002 0000          		NOP
   112 00003 0000          		NOP
   113 00004 0000          		NOP
   114 00005 16C4          		JMP		POWERON			;jump to poweron
   115 00006 0000          		NOP
   116                     		ORG		008H			;interrupter address
   117 00008 147C          		JMP		INT_TCC			;jump to TCC interupter
   118                     		
   119                     		
   120                     		ORG		040H			
   121                     ;****************************************
   122 00040               MODE1_TABH:					;mode1 led display table for low four bit
   123 00040 03C2          	ADD  	PC,A           ;  
   124 00041 1C00          	RETL   @0B00000000                             
   125 00042 1C10          	RETL   @0B00010000     ;led1~1                                
   126 00043 1C30          	RETL   @0B00110000     ;led1~2                         
   127 00044 1C70          	RETL   @0B01110000     ;led1~3                        
   128 00045 1CF0          	RETL   @0B11110000     ;led1~4  
   129                     	                  
   130 00046 1CF0          	RETL   @0B11110000     ;led1~4                           		                       ;
   131 00047 1CF0          	RETL   @0B11110000     ;led1~4                     
   132 00048 1CF0          	RETL   @0B11110000     ;led1~4                        
   133 00049 1CF0          	RETL   @0B11110000     ;led1~4         
   134 0004A               MODE1_TABL:					;mode1 led display table for high four bit
   135 0004A 03C2          	ADD  	PC,A           ;  
   136 0004B 1C00          	RETL   @0B00000000                             
   137 0004C 1C00          	RETL   @0B00000000     ;led1~1                                
   138 0004D 1C00          	RETL   @0B00000000     ;led1~2                         
   139 0004E 1C00          	RETL   @0B00000000     ;led1~3                        
   140 0004F 1C00          	RETL   @0B00000000     ;led1~4  
   141                     	                  
   142 00050 1C10          	RETL   @0B00010000     ;led5~5                           		                       ;
   143 00051 1C30          	RETL   @0B00110000     ;led5~6                     
   144 00052 1C70          	RETL   @0B01110000     ;led5~7                        
   145 00053 1CF0          	RETL   @0B11110000     ;led5~8    
   146                     
   147 00054               MODE2L_TAB:         ;mode2 and mode3 led display table for left
   148                             
   149 00054 03C2          	ADD  	PC,A  
   150 00055 1C0F          	RETL   @0b00001111                    ;                               
   151 00056 1C1E          	RETL   @0b00011110     ;led1                                
   152 00057 1C2E          	RETL   @0b00101110     ;led2                         
   153 00058 1C4E          	RETL   @0b01001110     ;led3                        
   154 00059 1C8E          	RETL   @0b10001110     ;led4                    
   155 0005A 1C1D          	RETL   @0b00011101     ;led5                           
   156 0005B 1C2D          	RETL   @0b00101101     ;led6                     
   157 0005C 1C4D          	RETL   @0b01001101     ;led7                        
   158 0005D 1C8D          	RETL   @0b10001101     ;led8
   159                     
   160                     
   161 0005E               MODE2R_TAB:					;mode2 and mode3 led display table for right
   162 0005E 03C2          	ADD  	PC,A  
   163 0005F 1C0F          	RETL   @0b00001111                    ;                               
   164 00060 1C1B          	RETL   @0b00011011     ;led1                                
   165 00061 1C2B          	RETL   @0b00101011     ;led2                         
   166 00062 1C4B          	RETL   @0b01001011     ;led3                        
   167 00063 1C8B          	RETL   @0b10001011     ;led4                    
   168 00064 1C17          	RETL   @0b00010111     ;led5                  
   169 00065 1C27          	RETL   @0b00100111     ;led6                     
   170 00066 1C47          	RETL   @0b01000111     ;led7                        
   171 00067 1C87          	RETL   @0b10000111     ;led8
   172                     	
   173                     	
   174 00068               DELAYON_L_TAB:				;motor play table for left	(G+)
   175 00068 03C2          	ADD		PC,A
   176 00069 1C00          	RETL	@0X00			;TOTAL IS 0X12	(9MS*2)
   177 0006A 1C07          	RETL	@0X07			;SPEEDL	1
   178 0006B 1C08          	RETL	@0X08			;SPEEDL	2
   179 0006C 1C09          	RETL	@0X09			;SPEEDL	3
   180 0006D 1C0A          	RETL	@0X0A			;SPEEDL	4
   181 0006E 1C0B          	RETL	@0X0B			;SPEEDL	5
   182 0006F 1C0C          	RETL	@0X0C			;SPEEDL	6
   183 00070 1C0D          	RETL	@0X0D			;SPEEDL	7
   184 00071 1C0E          	RETL	@0X0E			;SPEEDL	8
   185                     	
   186                     	
   187                     
   188 00072               DELAYON_R_TAB:				;motor play table for right (M+)
   189 00072 03C2          	ADD		PC,A
   190 00073 1C00          	RETL	@0X00			;TOTAL IS 0X0C (6MS*2)
   191 00074 1C02          	RETL	@0X02			;SPEEDR	1
   192 00075 1C03          	RETL	@0X03			;SPEEDR	2
   193 00076 1C04          	RETL	@0X04			;SPEEDR	3
   194 00077 1C05          	RETL	@0X05			;SPEEDR	4
   195 00078 1C06          	RETL	@0X06			;SPEEDR	5
   196 00079 1C07          	RETL	@0X07			;SPEEDR	6
   197 0007A 1C08          	RETL	@0X08			;SPEEDR	7
   198 0007B 1C09          	RETL	@0X09			;SPEEDR	8
   199                     	
   200                     ;*************************************************************
   201 0007C               INT_TCC:
   202 0007C 0051          		MOV		ACC_BUF,A  ;save the A ,RSR and STATUS register
   203 0007D 0751          		SWAP	ACC_BUF
   204 0007E 0403          		MOV		A,STATUS
   205 0007F 0052          		MOV		R3_BUF,A
   206 00080 0404          		MOV		A,RSR
   207 00081 0053          		MOV		R4_BUF,A
   208                     		
   209 00082 0E0F          		JBS		ISR,TCIF	;test the TCC interrupter flag
   210 00083 16BD          		JMP		INT_EXIT
   211                     		
   212 00084 0564          		INC		LED_DUTY	;for led dipaly bit (P=0,G=1,F=2,E=3)
   213 00085 0CA4          		JBC		LED_DUTY,2
   214 00086 00E4          		CLR		LED_DUTY
   215                     		
   216 00087 0559          		INC		FLAG_1MS		;for count TCC interrupt times for 18ms
   217 00088 055C          		INC		REG_1MS			;for 10ms
   218                     		
   219 00089 0574          		INC		SLEEP_FLAG
   220 0008A 0462          		MOV		SPEED_L,SPEED_L
   221 0008B 0E83          		JBS		STATUS,Z
   222 0008C 00F4          		CLR		SLEEP_FLAG
   223                     		
   224 0008D 0463          		MOV		SPEED_R,SPEED_R
   225 0008E 0E83          		JBS		STATUS,Z
   226 0008F 00F4          		CLR		SLEEP_FLAG
   227                     		
   228 00090 1812          		MOV		A,@0X12			;timer 18ms 
   229 00091 0319          		XOR		A,FLAG_1MS
   230 00092 0E83          		JBS		STATUS,Z
   231 00093 1497          		JMP		$+4
   232 00094 055A          		INC		REGL_18MS		;for left motor timer 
   233 00095 055B          		INC		REGR_18MS		;for right motor timer
   234 00096 00D9          		CLR		FLAG_1MS
   235                     		
   236                     				
   237 00097 180A          		MOV		A,@0X0A			;timer 10ms for keyscan
   238 00098 031C          		XOR		A,REG_1MS
   239 00099 0E83          		JBS		STATUS,Z
   240 0009A 1582          		JMP		DISPLAY			;display one bit every 1ms
   241                     		
   242 0009B 180F          		MOV		A,@0X0F       	;set the i/o port use for keyscan
   243 0009C 0006          		IOW		P6CR			;port6 as input
   244 0009D 1800          		MOV		A,@0X00
   245 0009E 0046          		MOV		PORT6,A
   246                     		
   247 0009F 1800          		MOV		A,@0X00   
   248 000A0 0005          		IOW		P5CR			;port5 as output
   249 000A1 1840          		MOV		A,@0X40			;for keyscan all key
   250 000A2 0045          		MOV		PORT5,A
   251                     		
   252 000A3 18F0          		MOV		A,@0XF0
   253 000A4 000D          		IOW		PHCR			;port6 pull high enable
   254                     		
   255                     		
   256 000A5 00DC          		CLR		REG_1MS			
   257 000A6 055D          		INC		REG_10MS		;for 40ms timer
   258 000A7 1803          		MOV		A,@0X03
   259 000A8 031D          		XOR		A,REG_10MS
   260 000A9 0E83          		JBS		STATUS,Z
   261 000AA 14AE          		JMP		KEY_SCAN
   262                     		
   263 000AB 00DD          		CLR		REG_10MS
   264 000AC 055E          		INC		REG_30MS		;for mode2 display timer
   265 000AD 055F          		INC		FLAG_30MS		;for mode3 display timer
   266                     
   267                     
   268 000AE               KEY_SCAN:
   269 000AE 1830          		MOV		A,@0X30		;delay time
   270 000AF 006A          		MOV		DELAY,A
   271 000B0               LOOP5:  
   272 000B0 05EA          		DJZ		DELAY
   273 000B1 14B0          		JMP		LOOP5
   274                     ;COM1
   275 000B2 0E06          		JBS		PORT6,0			;KEY SCAN START
   276 000B3 14DF          		JMP		S2_KEY_ON
   277 000B4 0E46          		JBS		PORT6,1
   278 000B5 14FA          		JMP		S5_KEY_ON
   279 000B6 0E86          		JBS		PORT6,2
   280 000B7 1503          		JMP		S6_KEY_ON
   281 000B8 0EC6          		JBS		PORT6,3
   282 000B9 14F1          		JMP		S4_KEY_ON
   283                     		
   284                     		
   285                     ;COM2		
   286                     		
   287 000BA 1820          		MOV		A,@0X20		;switch com2
   288 000BB 0045          		MOV		PORT5,A
   289                     		
   290 000BC 1830          		MOV		A,@0X30		;delay time
   291 000BD 006A          		MOV		DELAY,A
   292 000BE               LOOP4:  
   293 000BE 05EA          		DJZ		DELAY
   294 000BF 14BE          		JMP		LOOP4
   295                     		
   296                     		
   297 000C0 0E06          		JBS		PORT6,0
   298 000C1 14D6          		JMP		S1_KEY_ON
   299 000C2 0E46          		JBS		PORT6,1

⌨️ 快捷键说明

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