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

📄 uart.lis

📁 cc1020 串口通讯
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 02B2 2990              ld R2,y+
 02B4                   .dbline 0 ; func end
 02B4 1895              reti
 02B6           ;          loopi -> R10
 02B6           ;    delay_count -> y+10
                        .even
 02B6           _delay::
 02B6 00D0              rcall push_arg4
 02B8 00D0              rcall push_gset3
 02BA 2497              sbiw R28,4
 02BC           ; }
 02BC           ; 
 02BC           ; void delay(unsigned long delay_count)
 02BC           ; {
 02BC 06C0              rjmp L45
 02BE           L44:
 02BE           ;    unsigned char loopi;
 02BE           ;    while(delay_count-- != 0)
 02BE           ;    {
 02BE AA24              clr R10
 02C0 01C0              rjmp L50
 02C2           L47:
 02C2           L48:
 02C2 A394              inc R10
 02C4           L50:
 02C4 8A2D              mov R24,R10
 02C6 8230              cpi R24,2
 02C8 E0F3              brlo L47
 02CA           L45:
 02CA FE01              movw R30,R28
 02CC 2284              ldd R2,z+10
 02CE 3384              ldd R3,z+11
 02D0 4484              ldd R4,z+12
 02D2 5584              ldd R5,z+13
 02D4 FE01              movw R30,R28
 02D6 2082              std z+0,R2
 02D8 3182              std z+1,R3
 02DA 4282              std z+2,R4
 02DC 5382              std z+3,R5
 02DE 41E0              ldi R20,1
 02E0 50E0              ldi R21,0
 02E2 60E0              ldi R22,0
 02E4 70E0              ldi R23,0
 02E6 FE01              movw R30,R28
 02E8 2080              ldd R2,z+0
 02EA 3180              ldd R3,z+1
 02EC 4280              ldd R4,z+2
 02EE 5380              ldd R5,z+3
 02F0 241A              sub R2,R20
 02F2 350A              sbc R3,R21
 02F4 460A              sbc R4,R22
 02F6 570A              sbc R5,R23
 02F8 FE01              movw R30,R28
 02FA 2286              std z+10,R2
 02FC 3386              std z+11,R3
 02FE 4486              std z+12,R4
 0300 5586              std z+13,R5
 0302 40E0              ldi R20,0
 0304 50E0              ldi R21,0
 0306 60E0              ldi R22,0
 0308 70E0              ldi R23,0
 030A FE01              movw R30,R28
 030C 2080              ldd R2,z+0
 030E 3180              ldd R3,z+1
 0310 4280              ldd R4,z+2
 0312 5380              ldd R5,z+3
 0314 2416              cp R2,R20
 0316 3506              cpc R3,R21
 0318 4606              cpc R4,R22
 031A 5706              cpc R5,R23
 031C 09F0              breq X2
 031E CFCF              rjmp L44
 0320           X2:
 0320           L43:
 0320 2496              adiw R28,4
 0322 00D0              rcall pop_gset3
 0324 2496              adiw R28,4
 0326                   .dbline 0 ; func end
 0326 0895              ret
 0328           ;              s -> R20,R21
                        .even
 0328           _puts::
 0328 00D0              rcall push_gset1
 032A A801              movw R20,R16
 032C           ;       for(loopi=0;loopi<2;loopi++);
 032C           ;    }
 032C           ; }
 032C           ; 
 032C           ; 
 032C           ;       
 032C           ; /*                    字符串输出函数           */     
 032C           ; void puts(char *s)
 032C           ;       {
 032C 05C0              rjmp L53
 032E           L52:
 032E FA01              movw R30,R20
 0330 0081              ldd R16,z+0
 0332 6EDE              rcall _putchar
 0334 4F5F              subi R20,255  ; offset = 1
 0336 5F4F              sbci R21,255
 0338           L53:
 0338           ; 	while (*s)
 0338 FA01              movw R30,R20
 033A 2080              ldd R2,z+0
 033C 2220              tst R2
 033E B9F7              brne L52
 0340           ;               {
 0340           ;               putchar(*s);
 0340           ;               s++;
 0340           ;               }       
 0340           ;     putchar(0x0a);//回车换行
 0340 0AE0              ldi R16,10
 0342 66DE              rcall _putchar
 0344           ;       putchar(0x0d);
 0344 0DE0              ldi R16,13
 0346 64DE              rcall _putchar
 0348           L51:
 0348 00D0              rcall pop_gset1
 034A                   .dbline 0 ; func end
 034A 0895              ret
                        .even
 034C           _uart_init::
 034C           ; 	}
 034C           ; 
 034C           ; 
 034C           ; /*			UART初始化				*/	
 034C           ; void uart_init(void)
 034C           ; {
 034C           ; // OSCCAL=read_flash(0x1f20);
 034C           ;  rsok00=0;
 034C 2224              clr R2
 034E 20922700          sts _rsok00,R2
 0352           ;  rsok10=0;
 0352 20922600          sts _rsok10,R2
 0356           ;  rsok20=0;
 0356 20922500          sts _rsok20,R2
 035A           ;  rsok30=0;
 035A 20922400          sts _rsok30,R2
 035E           ;  rsok40=0;
 035E 20922300          sts _rsok40,R2
 0362           ;  rcvd1=0x00;
 0362 20922E00          sts _rcvd1,R2
 0366           ;  rscnt11=0x00;
 0366 20922D00          sts _rscnt11,R2
 036A           ;  rscnt12=0x00;
 036A 20922C00          sts _rscnt12,R2
 036E           ;  rscnt13=0x00;
 036E 20922B00          sts _rscnt13,R2
 0372           ;  rscnt01=0x00;
 0372 20922A00          sts _rscnt01,R2
 0376           ;  xx0=0;xx1=0;
 0376 20922900          sts _xx0,R2
 037A 20922800          sts _xx1,R2
 037E           ;  //UCSRB=0x90;//允许发送并开接收中断,发送不使能
 037E           ;  UCSRB = 0x00;
 037E 2AB8              out 0xa,R2
 0380           ;  UCSRA = 0x00;
 0380 2BB8              out 0xb,R2
 0382           ;  UBRRL=(fosc/16/(baud+1))%256;
 0382 88E6              ldi R24,104
 0384 89B9              out 0x9,R24
 0386           ;  UBRRH=(fosc/16/(baud+1))/256;
 0386 20BC              out 0x20,R2
 0388           ;  UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位
 0388 86E8              ldi R24,134
 038A 80BD              out 0x20,R24
 038C           ;  UCSRB=0x98;
 038C 88E9              ldi R24,152
 038E 8AB9              out 0xa,R24
 0390           L55:
 0390                   .dbline 0 ; func end
 0390 0895              ret
                        .even
 0392           _port_init::
 0392           ; }
 0392           ; 
 0392           ; void port_init(void)
 0392           ; {
 0392           ; 	//PB1-PCLK
 0392           ; 	//PB0-PDIO
 0392           ;  	PORTB = 0x00;
 0392 2224              clr R2
 0394 28BA              out 0x18,R2
 0396           ;       DDRB  = 0x03;
 0396 83E0              ldi R24,3
 0398 87BB              out 0x17,R24
 039A           ;   //PD5-PSEL
 039A           ;  //PD3-DCLK
 039A           ;  //PD4-DIO
 039A           ;       PORTD = 0x20;
 039A 80E2              ldi R24,32
 039C 82BB              out 0x12,R24
 039E           ;       DDRD  = 0x30;
 039E 80E3              ldi R24,48
 03A0 81BB              out 0x11,R24
 03A2           L56:
 03A2                   .dbline 0 ; func end
 03A2 0895              ret
                        .even
 03A4           _entcomm::
 03A4           ; }
 03A4           ; 
 03A4           ; /* 确认帧 */
 03A4           ; void entcomm(void)
 03A4           ; {
 03A4           ; 	xx0=0;xx1=0;
 03A4 2224              clr R2
 03A6 20922900          sts _xx0,R2
 03AA 20922800          sts _xx1,R2
 03AE           ;       UDR=0x55;
 03AE 85E5              ldi R24,85
 03B0 8CB9              out 0xc,R24
 03B2           ;       xx0=xx0^0x55;
 03B2 2826              eor R2,R24
 03B4 20922900          sts _xx0,R2
 03B8           ;       xx1+=0x55;
 03B8 80912800          lds R24,_xx1
 03BC 8B5A              subi R24,171    ; addi 85
 03BE 80932800          sts _xx1,R24
 03C2           L58:
 03C2           L59:
 03C2           ; 	while (!(UCSRA&(1<<UDRE)));
 03C2 5D9B              sbis 0xb,5
 03C4 FECF              rjmp L58
 03C6           ;       UDR=0xaa;  
 03C6 8AEA              ldi R24,170
 03C8 8CB9              out 0xc,R24
 03CA           ;       xx0=xx0^0xaa;
 03CA 9927              clr R25
 03CC 20902900          lds R2,_xx0
 03D0 3324              clr R3
 03D2 2826              eor R2,R24
 03D4 3926              eor R3,R25
 03D6 20922900          sts _xx0,R2
 03DA           ;       xx1+=0xaa;
 03DA 80912800          lds R24,_xx1
 03DE 8655              subi R24,86    ; addi 170
 03E0 80932800          sts _xx1,R24
 03E4           L61:
 03E4           L62:
 03E4           ; 	while (!(UCSRA&(1<<UDRE)));
 03E4 5D9B              sbis 0xb,5
 03E6 FECF              rjmp L61
 03E8           ;       UDR=addressper;
 03E8 80E1              ldi R24,16
 03EA 8CB9              out 0xc,R24
 03EC           ;       xx0=xx0^addressper;
 03EC 20902900          lds R2,_xx0
 03F0 2826              eor R2,R24
 03F2 20922900          sts _xx0,R2
 03F6           ;       xx1+=addressper;
 03F6 80912800          lds R24,_xx1
 03FA 805F              subi R24,240    ; addi 16
 03FC 80932800          sts _xx1,R24
 0400           L64:
 0400           L65:
 0400           ; 	while (!(UCSRA&(1<<UDRE)));
 0400 5D9B              sbis 0xb,5
 0402 FECF              rjmp L64
 0404           ;       UDR=0x56;
 0404 86E5              ldi R24,86
 0406 8CB9              out 0xc,R24
 0408           ;       xx0=xx0^0x56;
 0408 20902900          lds R2,_xx0
 040C 2826              eor R2,R24
 040E 20922900          sts _xx0,R2
 0412           ;       xx1+=0x56;
 0412 80912800          lds R24,_xx1
 0416 8A5A              subi R24,170    ; addi 86
 0418 80932800          sts _xx1,R24
 041C           L67:
 041C           L68:
 041C           ;  	while (!(UCSRA&(1<<UDRE)));
 041C 5D9B              sbis 0xb,5
 041E FECF              rjmp L67
 0420           ;       UDR=0;
 0420 2224              clr R2
 0422 2CB8              out 0xc,R2
 0424           ;       xx0=xx0^0x00;
 0424 20902900          lds R2,_xx0
 0428 20922900          sts _xx0,R2
 042C           ;       xx1+=0x00;
 042C 20902800          lds R2,_xx1
 0430 20922800          sts _xx1,R2
 0434           L70:
 0434           L71:
 0434           ; 	while (!(UCSRA&(1<<UDRE)));
 0434 5D9B              sbis 0xb,5
 0436 FECF              rjmp L70
 0438           ;       UDR=0x16;
 0438 86E1              ldi R24,22
 043A 8CB9              out 0xc,R24
 043C           ;       xx0=xx0^0x16;
 043C 20902900          lds R2,_xx0
 0440 2826              eor R2,R24
 0442 20922900          sts _xx0,R2
 0446           ;       xx1+=0x16;
 0446 80912800          lds R24,_xx1
 044A 8A5E              subi R24,234    ; addi 22
 044C 80932800          sts _xx1,R24
 0450           L73:
 0450           L74:
 0450           ; 	while (!(UCSRA&(1<<UDRE)));
 0450 5D9B              sbis 0xb,5
 0452 FECF              rjmp L73
 0454           ;       UDR=xx0;
 0454 20902900          lds R2,_xx0
 0458 2CB8              out 0xc,R2
 045A           L76:
 045A           L77:
 045A           ; 	while (!(UCSRA&(1<<UDRE)));
 045A 5D9B              sbis 0xb,5
 045C FECF              rjmp L76
 045E           L57:
 045E                   .dbline 0 ; func end
 045E 0895              ret
                        .even
 0460           _voltagerepol::
 0460           ; }
 0460           ; 
 0460           ; /* 发送交流电压值 */
 0460           ; void voltagerepol(void)
 0460           ; {
 0460           ;   xx0=0;xx1=0;
 0460 2224              clr R2
 0462 20922900          sts _xx0,R2
 0466 20922800          sts _xx1,R2
 046A           ;       UDR=0x55;
 046A 85E5              ldi R24,85
 046C 8CB9              out 0xc,R24
 046E           ;       xx0=xx0^0x55;
 046E 2826              eor R2,R24
 0470 20922900          sts _xx0,R2
 0474           ;       xx1+=0x55;
 0474 80912800          lds R24,_xx1
 0478 8B5A              subi R24,171    ; addi 85
 047A 80932800          sts _xx1,R24
 047E           L80:
 047E           L81:
 047E           ; 	while (!(UCSRA&(1<<UDRE)));

⌨️ 快捷键说明

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