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

📄 uart.lis

📁 cc1020 串口通讯
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00BA 20922C00          sts _rscnt12,R2
 00BE           ;                               rscnt13=0x00;
 00BE 20922B00          sts _rscnt13,R2
 00C2           ;         }
 00C2           L14:
 00C2           ;        	else
 00C2           ;     	{}
 00C2           L15:
 00C2           ; 	}
 00C2           L12:
 00C2           L11:
 00C2 2990              ld R2,y+
 00C4 2FBE              out 0x3f,R2
 00C6 9991              ld R25,y+
 00C8 8991              ld R24,y+
 00CA 2990              ld R2,y+
 00CC                   .dbline 0 ; func end
 00CC 1895              reti
                        .area vector(rom, abs)
                        .org 4
 0004 67C0              rjmp _int1_isr
                        .area text(rom, con, rel)
                        .even
 00CE           _int1_isr::
 00CE           ; 
 00CE           ; }
 00CE           ; 
 00CE           ; 
 00CE           ; #pragma interrupt_handler int1_isr:3
 00CE           ; void int1_isr(void)
 00CE           ; {
 00CE           L16:
 00CE                   .dbline 0 ; func end
 00CE 1895              reti
                        .even
 00D0           _init_devices::
 00D0           ;  	 //external interupt on INT1
 00D0           ; }
 00D0           ; 
 00D0           ; //call this routine to initialize all peripherals
 00D0           ; void init_devices(void)
 00D0           ; {
 00D0           ;  	//stop errant interrupts until set up
 00D0           ;  	CLI(); //disable all interrupts
 00D0 F894              cli
 00D2           ;       watchdog_init();
 00D2 9ADF              rcall _watchdog_init
 00D4           ;       timer0_init();
 00D4 A1DF              rcall _timer0_init
 00D6           ;       timer1_init();
 00D6 B1DF              rcall _timer1_init
 00D8           ;       timer2_init();
 00D8 BEDF              rcall _timer2_init
 00DA           ;       MCUCR  = 0x08;  //INT1的下降沿产生中断
 00DA 88E0              ldi R24,8
 00DC 85BF              out 0x35,R24
 00DE           ;       GICR   = 0x80;  //BOOT区起始地址
 00DE 80E8              ldi R24,128
 00E0 8BBF              out 0x3b,R24
 00E2           ;       TIMSK  = 0x41; //timer interrupt sources
 00E2 81E4              ldi R24,65
 00E4 89BF              out 0x39,R24
 00E6           ;       SEI(); //re-enable interrupts
 00E6 7894              sei
 00E8           L17:
 00E8                   .dbline 0 ; func end
 00E8 0895              ret
                        .area vector(rom, abs)
                        .org 22
 0016 75C0              rjmp _uart0_rx_isr
                        .area text(rom, con, rel)
                        .even
 00EA           _uart0_rx_isr::
 00EA 2A92              st -y,R2
 00EC 3A92              st -y,R3
 00EE 8A93              st -y,R24
 00F0 9A93              st -y,R25
 00F2 EA93              st -y,R30
 00F4 FA93              st -y,R31
 00F6 2FB6              in R2,0x3f
 00F8 2A92              st -y,R2
 00FA           ;       //all peripherals are now initialized
 00FA           ; }
 00FA           ; 
 00FA           ; 
 00FA           ; 
 00FA           ; //串行接收中断服务程序
 00FA           ; #pragma interrupt_handler uart0_rx_isr:12
 00FA           ; void uart0_rx_isr(void)
 00FA           ; {
 00FA           ;       if(!(UCSRA& (1<<RXC))) 
 00FA 5F99              sbic 0xb,7
 00FC 01C0              rjmp L19
 00FE           ;               return;
 00FE D2C0              rjmp L18
 0100           L19:
 0100           ; 	if(rsok00==0){
 0100 20902700          lds R2,_rsok00
 0104 2220              tst R2
 0106 31F5              brne L21
 0108           ;               rcvd1=UDR;
 0108 2CB0              in R2,0xc
 010A 20922E00          sts _rcvd1,R2
 010E           ;               if(rcvd1==0x55)rscnt01++;
 010E 822D              mov R24,R2
 0110 8535              cpi R24,85
 0112 31F4              brne L23
 0114 80912A00          lds R24,_rscnt01
 0118 8F5F              subi R24,255    ; addi 1
 011A 80932A00          sts _rscnt01,R24
 011E 09C0              rjmp L24
 0120           L23:
 0120           ; 		else if(rcvd1==0xaa)rscnt01++;
 0120 80912E00          lds R24,_rcvd1
 0124 8A3A              cpi R24,170
 0126 29F4              brne L25
 0128 80912A00          lds R24,_rscnt01
 012C 8F5F              subi R24,255    ; addi 1
 012E 80932A00          sts _rscnt01,R24
 0132           L25:
 0132           ; 		else{}
 0132           L26:
 0132           L24:
 0132           ; 		if((rcvd1==0xaa)&&(rscnt01>=1)){rsok00=1;
 0132 80912E00          lds R24,_rcvd1
 0136 8A3A              cpi R24,170
 0138 09F0              breq X0
 013A B4C0              rjmp L22
 013C           X0:
 013C 80912A00          lds R24,_rscnt01
 0140 8130              cpi R24,1
 0142 08F4              brsh X1
 0144 AFC0              rjmp L22
 0146           X1:
 0146 81E0              ldi R24,1
 0148 80932700          sts _rsok00,R24
 014C           ;                                                                               rscnt01=0;                                                                              
 014C 2224              clr R2
 014E 20922A00          sts _rscnt01,R2
 0152           ;                                                                               }
 0152           ;                               }
 0152 A8C0              rjmp L22
 0154           L21:
 0154           ; 	else{
 0154           ; 		if(rsok10==0){
 0154 20902600          lds R2,_rsok10
 0158 2220              tst R2
 015A 41F5              brne L29
 015C           ; 
 015C           ;                       rscnt11=UDR;
 015C 2CB0              in R2,0xc
 015E 20922D00          sts _rscnt11,R2
 0162           ; //    if((rscnt11==addressper)||(rscnt11==0x00))
 0162           ;                       if(rscnt11==addressper)
 0162 822D              mov R24,R2
 0164 8031              cpi R24,16
 0166 F1F4              brne L31
 0168           ;                       {   rsok10=1;
 0168 81E0              ldi R24,1
 016A 80932600          sts _rsok10,R24
 016E           ;                               xx0=0;xx1=0;
 016E 2224              clr R2
 0170 20922900          sts _xx0,R2
 0174 20922800          sts _xx1,R2
 0178           ;                               xx0=xx0^0x55;
 0178 85E5              ldi R24,85
 017A 2826              eor R2,R24
 017C 20922900          sts _xx0,R2
 0180           ;                               xx0=xx0^0xaa;
 0180 8AEA              ldi R24,170
 0182 90E0              ldi R25,0
 0184 3324              clr R3
 0186 2826              eor R2,R24
 0188 3926              eor R3,R25
 018A 20922900          sts _xx0,R2
 018E           ;                               xx0=xx0^rscnt11;
 018E 20902D00          lds R2,_rscnt11
 0192 30902900          lds R3,_xx0
 0196 3224              eor R3,R2
 0198 30922900          sts _xx0,R3
 019C           ;                               Tx_Rx=0;
 019C 2224              clr R2
 019E 20921B00          sts _Tx_Rx,R2
 01A2           ;                       }
 01A2 80C0              rjmp L30
 01A4           L31:
 01A4           ; 			else { rsok00=0;}
 01A4 2224              clr R2
 01A6 20922700          sts _rsok00,R2
 01AA           ;                               }
 01AA 7CC0              rjmp L30
 01AC           L29:
 01AC           ; 		else{
 01AC           ; 			if(rsok20==0){
 01AC 20902500          lds R2,_rsok20
 01B0 2220              tst R2
 01B2 61F4              brne L33
 01B4           ;                               rscnt12=UDR;
 01B4 2CB0              in R2,0xc
 01B6 20922C00          sts _rscnt12,R2
 01BA           ;                               rsok20=1;
 01BA 81E0              ldi R24,1
 01BC 80932500          sts _rsok20,R24
 01C0           ;                               xx0=xx0^rscnt12;
 01C0 30902900          lds R3,_xx0
 01C4 3224              eor R3,R2
 01C6 30922900          sts _xx0,R3
 01CA           ;                                               }
 01CA 6CC0              rjmp L34
 01CC           L33:
 01CC           ; 			else {
 01CC           ; 				if(rsok30==0){
 01CC 20902400          lds R2,_rsok30
 01D0 2220              tst R2
 01D2 61F4              brne L35
 01D4           ;                                       rscnt13=UDR;
 01D4 2CB0              in R2,0xc
 01D6 20922B00          sts _rscnt13,R2
 01DA           ;                                       rsok30=1;
 01DA 81E0              ldi R24,1
 01DC 80932400          sts _rsok30,R24
 01E0           ;                                       xx0=xx0^rscnt13;
 01E0 30902900          lds R3,_xx0
 01E4 3224              eor R3,R2
 01E6 30922900          sts _xx0,R3
 01EA           ;                                                       }
 01EA 5CC0              rjmp L36
 01EC           L35:
 01EC           ; 				else{		
 01EC           ; 					rcv1[rscnt01]=UDR;
 01EC 80E0              ldi R24,<_rcv1
 01EE 90E0              ldi R25,>_rcv1
 01F0 E0912A00          lds R30,_rscnt01
 01F4 FF27              clr R31
 01F6 E80F              add R30,R24
 01F8 F91F              adc R31,R25
 01FA 2CB0              in R2,0xc
 01FC 2082              std z+0,R2
 01FE           ;                               if(rscnt01<(rscnt13+1)){        xx0=xx0^rcv1[rscnt01];
 01FE 80912B00          lds R24,_rscnt13
 0202 8F5F              subi R24,255    ; addi 1
 0204 20902A00          lds R2,_rscnt01
 0208 2816              cp R2,R24
 020A B8F4              brsh L37
 020C 80E0              ldi R24,<_rcv1
 020E 90E0              ldi R25,>_rcv1
 0210 E22D              mov R30,R2
 0212 FF27              clr R31
 0214 E80F              add R30,R24
 0216 F91F              adc R31,R25
 0218 2080              ldd R2,z+0
 021A 30902900          lds R3,_xx0
 021E 3224              eor R3,R2
 0220 30922900          sts _xx0,R3
 0224           ;                                                                               xx1+=rcv1[rscnt01];
 0224 E0912A00          lds R30,_rscnt01
 0228 FF27              clr R31
 022A E80F              add R30,R24
 022C F91F              adc R31,R25
 022E 2080              ldd R2,z+0
 0230 30902800          lds R3,_xx1
 0234 320C              add R3,R2
 0236 30922800          sts _xx1,R3
 023A           ;                                                                                       }
 023A           L37:
 023A           ; 					if(rscnt01==(rscnt13+1)){
 023A 80912B00          lds R24,_rscnt13
 023E 8F5F              subi R24,255    ; addi 1
 0240 20902A00          lds R2,_rscnt01
 0244 2816              cp R2,R24
 0246 49F5              brne L39
 0248           ;                                               if(xx0==rcv1[rscnt01])
 0248 80E0              ldi R24,<_rcv1
 024A 90E0              ldi R25,>_rcv1
 024C E22D              mov R30,R2
 024E FF27              clr R31
 0250 E80F              add R30,R24
 0252 F91F              adc R31,R25
 0254 2080              ldd R2,z+0
 0256 30902900          lds R3,_xx0
 025A 3214              cp R3,R2
 025C 51F4              brne L41
 025E           ;                                               {       rsok40=1;       
 025E 81E0              ldi R24,1
 0260 80932300          sts _rsok40,R24
 0264           ;                                                       Rx_Time = 0;
 0264 2224              clr R2
 0266 20921A00          sts _Rx_Time,R2
 026A           ;                                                       Tx_Rx   = 2;
 026A 82E0              ldi R24,2
 026C 80931B00          sts _Tx_Rx,R24
 0270           ;                                               }
 0270 14C0              rjmp L42
 0272           L41:
 0272           ; 						else {
 0272           ; 			//	 	   		 UCSRB=UCSRB|0x08;
 0272           ;                              rsok00=0;
 0272 2224              clr R2
 0274 20922700          sts _rsok00,R2
 0278           ;                                                        rsok10=0;
 0278 20922600          sts _rsok10,R2
 027C           ;                                                        rsok20=0;
 027C 20922500          sts _rsok20,R2
 0280           ;                                                        rsok30=0;
 0280 20922400          sts _rsok30,R2
 0284           ;                                                        rsok40=0;
 0284 20922300          sts _rsok40,R2
 0288           ;                                                        rscnt01=0;
 0288 20922A00          sts _rscnt01,R2
 028C           ;                                                        rscnt11=0;             
 028C 20922D00          sts _rscnt11,R2
 0290           ;                                                        Tx_Rx=2;
 0290 82E0              ldi R24,2
 0292 80931B00          sts _Tx_Rx,R24
 0296           ;                                                        Rx_Time=0;
 0296 20921A00          sts _Rx_Time,R2
 029A           ;                                                        }
 029A           L42:
 029A           ; 											}
 029A           L39:
 029A           ; 					rscnt01++;
 029A 80912A00          lds R24,_rscnt01
 029E 8F5F              subi R24,255    ; addi 1
 02A0 80932A00          sts _rscnt01,R24
 02A4           ;                                       }
 02A4           L36:
 02A4           ; 			}
 02A4           L34:
 02A4           ; 		}
 02A4           L30:
 02A4           ; 	}
 02A4           L22:
 02A4           L18:
 02A4 2990              ld R2,y+
 02A6 2FBE              out 0x3f,R2
 02A8 F991              ld R31,y+
 02AA E991              ld R30,y+
 02AC 9991              ld R25,y+
 02AE 8991              ld R24,y+
 02B0 3990              ld R3,y+

⌨️ 快捷键说明

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