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

📄 uart.lis

📁 LTC2449 AD转换 LTC2449 AD转换 LTC2449 AD转换
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module uart.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\mysoft\DH980\uart.c
 0000                   .dbfunc e uart0_init _uart0_init fV
                        .even
 0000           _uart0_init::
 0000                   .dbline -1
 0000                   .dbline 13
 0000           ; #include <iom169v.h>
 0000           ; #include <macros.h>
 0000           ; #include <stdio.h>
 0000           ; #include "main.h"
 0000           ; #include "uart.h"
 0000           ; 
 0000           ; unsigned char relay_temp[7];
 0000           ; unsigned char *load;
 0000           ; //UART0 initialize
 0000           ; // desired baud rate: 19200
 0000           ; // actual: baud rate:19200 (0.0%)
 0000           ; void uart0_init(void)
 0000           ; {
 0000                   .dbline 14
 0000           ;  UCSR0B = 0x00; //disable while setting baud rate
 0000 2224              clr R2
 0002 2092C100          sts 193,R2
 0006                   .dbline 15
 0006           ;  UCSR0A = 0x00;
 0006 2092C000          sts 192,R2
 000A                   .dbline 16
 000A           ;  UCSR0C = 0x07;
 000A 87E0              ldi R24,7
 000C 8093C200          sts 194,R24
 0010                   .dbline 17
 0010           ;  UBRR0L = 0x23; //set baud rate lo
 0010 83E2              ldi R24,35
 0012 8093C400          sts 196,R24
 0016                   .dbline 18
 0016           ;  UBRR0H = 0x00; //set baud rate hi
 0016 2092C500          sts 197,R2
 001A                   .dbline 19
 001A           ;  UCSR0B = 0x98;
 001A 88E9              ldi R24,152
 001C 8093C100          sts 193,R24
 0020                   .dbline -2
 0020           L1:
 0020                   .dbline 0 ; func end
 0020 0895              ret
 0022                   .dbend
 0022                   .dbfunc e put_c _put_c fV
 0022           ;              c -> R16
                        .even
 0022           _put_c::
 0022                   .dbline -1
 0022                   .dbline 23
 0022           ; }
 0022           ; 
 0022           ; void put_c(unsigned char c) //发送采用查询方式
 0022           ; {
 0022           L3:
 0022                   .dbline 24
 0022           L4:
 0022                   .dbline 24
 0022           ;       while( (UCSRA & 0b00100000)==0);
 0022 2090C000          lds R2,192
 0026 25FE              sbrs R2,5
 0028 FCCF              rjmp L3
 002A                   .dbline 26
 002A           ;       //delay_loop(5);
 002A           ;       UDR=c;
 002A 0093C600          sts 198,R16
 002E                   .dbline -2
 002E           L2:
 002E                   .dbline 0 ; func end
 002E 0895              ret
 0030                   .dbsym r c 16 c
 0030                   .dbend
 0030                   .dbfunc e put_s _put_s fV
 0030           ;            ptr -> R20,R21
                        .even
 0030           _put_s::
 0030 0E940000          xcall push_gset1
 0034 A801              movw R20,R16
 0036                   .dbline -1
 0036                   .dbline 30
 0036           ; }
 0036           ; 
 0036           ; void put_s(unsigned char *ptr)
 0036           ; {
 0036 04C0              xjmp L8
 0038           L7:
 0038                   .dbline 32
 0038                   .dbline 33
 0038 FA01              movw R30,R20
 003A 0191              ld R16,Z+
 003C AF01              movw R20,R30
 003E F1DF              xcall _put_c
 0040                   .dbline 34
 0040           L8:
 0040                   .dbline 31
 0040           ;       while (*ptr)
 0040 FA01              movw R30,R20
 0042 2080              ldd R2,z+0
 0044 2220              tst R2
 0046 C1F7              brne L7
 0048                   .dbline -2
 0048           L6:
 0048 0E940000          xcall pop_gset1
 004C                   .dbline 0 ; func end
 004C 0895              ret
 004E                   .dbsym r ptr 20 pc
 004E                   .dbend
                        .area vector(rom, abs)
                        .org 52
 0034 0C942700          jmp _uart0_rx_isr
                        .area text(rom, con, rel)
 004E                   .dbfile E:\mysoft\DH980\uart.c
 004E                   .dbfunc e uart0_rx_isr _uart0_rx_isr fV
                        .even
 004E           _uart0_rx_isr::
 004E 2A92              st -y,R2
 0050 3A92              st -y,R3
 0052 8A93              st -y,R24
 0054 9A93              st -y,R25
 0056 EA93              st -y,R30
 0058 FA93              st -y,R31
 005A 2FB6              in R2,0x3f
 005C 2A92              st -y,R2
 005E                   .dbline -1
 005E                   .dbline 40
 005E           ;       {
 005E           ;               put_c(*ptr++);
 005E           ;       }
 005E           ; }
 005E           ; 
 005E           ; 
 005E           ; #pragma interrupt_handler uart0_rx_isr:14
 005E           ; void uart0_rx_isr(void)
 005E           ; {
 005E                   .dbline 41
 005E           ;       if (load_time > 3)
 005E 83E0              ldi R24,3
 0060 90E0              ldi R25,0
 0062 20900000          lds R2,_load_time
 0066 30900100          lds R3,_load_time+1
 006A 8215              cp R24,R2
 006C 9305              cpc R25,R3
 006E 48F4              brsh L11
 0070                   .dbline 42
 0070           ;               {
 0070                   .dbline 43
 0070           ;                       load_no = 0;
 0070 2224              clr R2
 0072 20920000          sts _load_no,R2
 0076                   .dbline 44
 0076           ;                       load = &relay_temp[0];
 0076 80E0              ldi R24,<_relay_temp
 0078 90E0              ldi R25,>_relay_temp
 007A 90930100          sts _load+1,R25
 007E 80930000          sts _load,R24
 0082                   .dbline 45
 0082           ;               }
 0082           L11:
 0082                   .dbline 46
 0082 2224              clr R2
 0084 3324              clr R3
 0086 30920100          sts _load_time+1,R3
 008A 20920000          sts _load_time,R2
 008E                   .dbline 47
 008E 80910000          lds R24,_load_no
 0092 8530              cpi R24,5
 0094 80F4              brsh L13
 0096                   .dbline 48
 0096                   .dbline 49
 0096 20900000          lds R2,_load
 009A 30900100          lds R3,_load+1
 009E E82F              mov R30,R24
 00A0 FF27              clr R31
 00A2 E20D              add R30,R2
 00A4 F31D              adc R31,R3
 00A6 2090C600          lds R2,198
 00AA 2082              std z+0,R2
 00AC                   .dbline 50
 00AC 80910000          lds R24,_load_no
 00B0 8F5F              subi R24,255    ; addi 1
 00B2 80930000          sts _load_no,R24
 00B6                   .dbline 51
 00B6           L13:
 00B6                   .dbline -2
 00B6           L10:
 00B6 2990              ld R2,y+
 00B8 2FBE              out 0x3f,R2
 00BA F991              ld R31,y+
 00BC E991              ld R30,y+
 00BE 9991              ld R25,y+
 00C0 8991              ld R24,y+
 00C2 3990              ld R3,y+
 00C4 2990              ld R2,y+
 00C6                   .dbline 0 ; func end
 00C6 1895              reti
 00C8                   .dbend
 00C8                   .dbfunc e load_init _load_init fV
                        .even
 00C8           _load_init::
 00C8                   .dbline -1
 00C8                   .dbline 54
 00C8           ;       load_time=0;
 00C8           ;       if(load_no<5)
 00C8           ;               {
 00C8           ;                       *(load+load_no) = UDR;
 00C8           ;                       load_no++;
 00C8           ;               }
 00C8           ; }
 00C8           ; void load_init()
 00C8           ; {
 00C8                   .dbline 55
 00C8           ;       load_time=0;
 00C8 2224              clr R2
 00CA 3324              clr R3
 00CC 30920100          sts _load_time+1,R3
 00D0 20920000          sts _load_time,R2
 00D4                   .dbline 56
 00D4           ;       load_no=0;
 00D4 20920000          sts _load_no,R2
 00D8                   .dbline 57
 00D8           ;       load = &relay_temp[0];
 00D8 80E0              ldi R24,<_relay_temp
 00DA 90E0              ldi R25,>_relay_temp
 00DC 90930100          sts _load+1,R25
 00E0 80930000          sts _load,R24
 00E4                   .dbline -2
 00E4           L15:
 00E4                   .dbline 0 ; func end
 00E4 0895              ret
 00E6                   .dbend

⌨️ 快捷键说明

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