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

📄 feedis_uart.lis

📁 AVR系列单片机ATMEGA64开发的LED显示屏程序 内容包括ATMEGA64大部分资源的初始化程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module feedis_uart.c
                        .area vector(rom, abs)
                        .org 72
 0048 0C942100          jmp _UART_RX_interrupt
                        .org 4
 0004 0C940000          jmp _int0_isr
                        .area data(ram, con, rel)
 0000           _FLAG::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_uart.c
 0001                   .dbsym e FLAG _FLAG c
 0001           _ready_rx::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_uart.c
 0002                   .dbsym e ready_rx _ready_rx c
 0002           _zx::
 0002                   .blkb 1
                        .area idata
 0002 38                .byte 56
                        .area data(ram, con, rel)
 0003                   .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_uart.c
 0003                   .blkb 2
                        .area idata
 0003 3838              .byte 56,56
                        .area data(ram, con, rel)
 0005                   .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_uart.c
 0005                   .blkb 2
                        .area idata
 0005 3838              .byte 56,56
                        .area data(ram, con, rel)
 0007                   .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_uart.c
 0007                   .blkb 2
                        .area idata
 0007 3838              .byte 56,56
                        .area data(ram, con, rel)
 0009                   .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_uart.c
 0009                   .blkb 2
                        .area idata
 0009 3838              .byte 56,56
                        .area data(ram, con, rel)
 000B                   .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_uart.c
 000B                   .blkb 2
                        .area idata
 000B 3838              .byte 56,56
                        .area data(ram, con, rel)
 000D                   .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_uart.c
 000D                   .blkb 2
                        .area idata
 000D 3838              .byte 56,56
                        .area data(ram, con, rel)
 000F                   .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_uart.c
 000F                   .dbstruct 0 13 .1
 000F                   .dbfield 0 zhou c
 000F                   .dbfield 1 dunwei A[4:4]c
 000F                   .dbfield 5 zongzhong A[4:4]c
 000F                   .dbfield 9 chaoxian A[4:4]c
 000F                   .dbend
 000F                   .dbsym e zx _zx S[.1]
 000F           _dip::
 000F                   .blkb 1
                        .area idata
 000F 00                .byte 0
                        .area data(ram, con, rel)
 0010                   .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_uart.c
 0010                   .dbsym e dip _dip c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_uart.c
 0000                   .dbfunc e int0_isr _int0_isr fV
                        .even
 0000           _int0_isr::
 0000 8A93              st -y,R24
 0002 8FB7              in R24,0x3f
 0004 8A93              st -y,R24
 0006                   .dbline -1
 0006                   .dbline 28
 0006           ; #include <include.h>
 0006           ; #pragma interrupt_handler UART_RX_interrupt:iv_USART0_RX
 0006           ; #pragma interrupt_handler int0_isr:iv_INT0
 0006           ; //全局变量
 0006           ; //如果变量会在中断服务程序中被修改,须加volatile限定
 0006           ; volatile unsigned char FLAG = 0;                              //按键标志
 0006           ; 
 0006           ; 
 0006           ; volatile unsigned char RX_index;                      //存放接收数据的个数
 0006           ; volatile uchar ready_rx=0;
 0006           ; volatile uchar receivebox[70];
 0006           ; unsigned char light;
 0006           ; 
 0006           ; extern uchar hantemp[32];
 0006           ; //extern uchar dis[1024];
 0006           ; extern uchar dis[3072];
 0006           ; extern volatile uchar ISDstatus ;
 0006           ; //extern volatile uchar countwait;
 0006           ; extern uchar ISDmoney[5];
 0006           ; volatile uchar SPEAK ;
 0006           ; zhx zx={0x38,
 0006           ; 0x38,0x38,0x38,0x38,
 0006           ; 0x38,0x38,0x38,0x38,
 0006           ; 0x38,0x38,0x38, 0x38};
 0006           ; uchar flg;
 0006           ; uchar dip=0;
 0006           ; void int0_isr(void)
 0006           ; {
 0006                   .dbline 31
 0006           ;   //put_c(0xa5);
 0006           ;  //countwait = 0;
 0006           ;   SPEAK = 1;
 0006 81E0              ldi R24,1
 0008 80930100          sts _SPEAK,R24
 000C                   .dbline -2
 000C           L2:
 000C 8991              ld R24,y+
 000E 8FBF              out 0x3f,R24
 0010 8991              ld R24,y+
 0012                   .dbline 0 ; func end
 0012 1895              reti
 0014                   .dbend
 0014                   .dbfunc e put_c _put_c fV
 0014           ;              c -> R16
                        .even
 0014           _put_c::
 0014                   .dbline -1
 0014                   .dbline 36
 0014           ; //if(ISDstatus & 0X02)
 0014           ; // ISDstatus &= 0xfd;
 0014           ; }
 0014           ; void put_c(unsigned char c) //发送采用查询方式
 0014           ; {
 0014           L4:
 0014                   .dbline 37
 0014           L5:
 0014                   .dbline 37
 0014           ;       while( !(UCSR0A & (1<<UDRE0)) );
 0014 5D9B              sbis 0xb,5
 0016 FECF              rjmp L4
 0018                   .dbline 38
 0018           ;       UDR0=c;
 0018 0CB9              out 0xc,R16
 001A                   .dbline -2
 001A           L3:
 001A                   .dbline 0 ; func end
 001A 0895              ret
 001C                   .dbsym r c 16 c
 001C                   .dbend
 001C                   .dbfunc e put_s _put_s fV
 001C           ;            ptr -> R20,R21
                        .even
 001C           _put_s::
 001C 0E940000          xcall push_gset1
 0020 A801              movw R20,R16
 0022                   .dbline -1
 0022                   .dbline 42
 0022           ; }
 0022           ; 
 0022           ; void put_s(unsigned char *ptr)
 0022           ; {
 0022 04C0              xjmp L9
 0024           L8:
 0024                   .dbline 44
 0024                   .dbline 45
 0024 FA01              movw R30,R20
 0026 0191              ld R16,Z+
 0028 AF01              movw R20,R30
 002A F4DF              xcall _put_c
 002C                   .dbline 46
 002C           L9:
 002C                   .dbline 43
 002C           ;       while (*ptr)
 002C FA01              movw R30,R20
 002E 2080              ldd R2,z+0
 0030 2220              tst R2
 0032 C1F7              brne L8
 0034                   .dbline 47
 0034           ;       {
 0034           ;               put_c(*ptr++);
 0034           ;       }
 0034           ;       put_c(0x0D);
 0034 0DE0              ldi R16,13
 0036 EEDF              xcall _put_c
 0038                   .dbline 48
 0038           ;       put_c(0x0A);  //结尾发送回车换行
 0038 0AE0              ldi R16,10
 003A ECDF              xcall _put_c
 003C                   .dbline -2
 003C           L7:
 003C 0E940000          xcall pop_gset1
 0040                   .dbline 0 ; func end
 0040 0895              ret
 0042                   .dbsym r ptr 20 pc
 0042                   .dbend
 0042                   .dbfunc e UART_RX_interrupt _UART_RX_interrupt fV
 0042           ;           temp -> R20
                        .even
 0042           _UART_RX_interrupt::
 0042 0E940000          xcall push_lset
 0046 0E940000          xcall push_gset2
 004A                   .dbline -1
 004A                   .dbline 52
 004A           ; }
 004A           ; 
 004A           ; void UART_RX_interrupt(void) //串口接收中断服务程序
 004A           ; {
 004A                   .dbline 55
 004A           ;  
 004A           ;       uchar temp;
 004A           ;       temp = UDR0;
 004A 4CB1              in R20,0xc
 004C                   .dbline 60
 004C           ;       
 004C           ; //    countwait = 0;
 004C           ; 
 004C           ;       
 004C           ;       switch(ready_rx)
 004C 60910100          lds R22,_ready_rx
 0050 7727              clr R23
 0052 6030              cpi R22,0
 0054 6707              cpc R22,R23
 0056 F9F0              breq L15
 0058           X0:
 0058 6130              cpi R22,1
 005A E0E0              ldi R30,0
 005C 7E07              cpc R23,R30
 005E 09F4              brne X2
 0060 39C0              xjmp L22
 0062           X2:
 0062 6230              cpi R22,2
 0064 E0E0              ldi R30,0
 0066 7E07              cpc R23,R30
 0068 09F4              brne X3
 006A 3DC0              xjmp L24
 006C           X3:
 006C 6330              cpi R22,3
 006E E0E0              ldi R30,0
 0070 7E07              cpc R23,R30
 0072 09F4              brne X4
 0074 4FC0              xjmp L29
 0076           X4:
 0076 6430              cpi R22,4
 0078 E0E0              ldi R30,0
 007A 7E07              cpc R23,R30
 007C 09F4              brne X5
 007E 65C0              xjmp L35
 0080           X5:
 0080 6530              cpi R22,5
 0082 E0E0              ldi R30,0
 0084 7E07              cpc R23,R30
 0086 09F4              brne X6
 0088 83C0              xjmp L41
 008A           X6:
 008A 6A30              cpi R22,10
 008C E0E0              ldi R30,0
 008E 7E07              cpc R23,R30
 0090 09F4              brne X7
 0092 E0C0              xjmp L53
 0094           X7:
 0094 F8C0              xjmp L12
 0096           X1:
 0096                   .dbline 61
 0096           ;       {
 0096           L15:
 0096                   .dbline 64
 0096           ;               case 0:
 0096           ;                       
 0096           ;                       if(temp == 'D' )        //如果接收到显示控制命令
 0096 4434              cpi R20,68
 0098 59F4              brne L16
 009A                   .dbline 65
 009A           ;                               {
 009A                   .dbline 66
 009A           ;                               FLAG = 0;
 009A 2224              clr R2
 009C 20920000          sts _FLAG,R2
 00A0                   .dbline 67
 00A0           ;                               ready_rx = 1;
 00A0 81E0              ldi R24,1
 00A2 80930100          sts _ready_rx,R24
 00A6                   .dbline 68
 00A6           ;                               RX_index = 1;
 00A6 80934900          sts _RX_index,R24
 00AA                   .dbline 69
 00AA           ;                               receivebox[0] = temp;
 00AA 40930300          sts _receivebox,R20
 00AE                   .dbline 70
 00AE           ;                               }
 00AE F0C0              xjmp L13
 00B0           L16:
 00B0                   .dbline 72
 00B0           ;                               
 00B0           ;                       else if(temp == 'A')    // 接收到A打头控制命令
 00B0 4134              cpi R20,65
 00B2 49F4              brne L18
 00B4                   .dbline 73
 00B4           ;                       {
 00B4                   .dbline 74
 00B4           ;                               FLAG = 0;
 00B4 2224              clr R2
 00B6 20920000          sts _FLAG,R2
 00BA                   .dbline 75
 00BA           ;                               ready_rx = 2;
 00BA 82E0              ldi R24,2
 00BC 80930100          sts _ready_rx,R24
 00C0                   .dbline 77
 00C0           ;                               
 00C0           ;                               receivebox[0] = temp;
 00C0 40930300          sts _receivebox,R20
 00C4                   .dbline 78
 00C4           ;                       }
 00C4 E5C0              xjmp L13
 00C6           L18:
 00C6                   .dbline 79
 00C6           ;                       else if(temp ==0x43)
 00C6 4334              cpi R20,67
 00C8 09F0              breq X8
 00CA E2C0              xjmp L13
 00CC           X8:
 00CC                   .dbline 80
 00CC           ;                       {
 00CC                   .dbline 81
 00CC           ;                        clean(0);
 00CC 0027              clr R16
 00CE 0E940000          xcall _clean
 00D2                   .dbline 82
 00D2           ;                       }
 00D2                   .dbline 84
 00D2           ;                       
 00D2           ;                       break;
 00D2 DEC0              xjmp L13
 00D4           L22:
 00D4                   .dbline 86
 00D4           ;               case 1:
 00D4           ;                       receivebox[1] = temp;           //存下亮度值
 00D4 40930400          sts _receivebox+1,R20
 00D8                   .dbline 87
 00D8           ;                       RX_index = 2;
 00D8 82E0              ldi R24,2
 00DA 80934900          sts _RX_index,R24
 00DE                   .dbline 88
 00DE           ;                       ready_rx = 3;
 00DE 83E0              ldi R24,3
 00E0 80930100          sts _ready_rx,R24
 00E4                   .dbline 89
 00E4           ;                       break;
 00E4 D5C0              xjmp L13
 00E6           L24:
 00E6                   .dbline 91
 00E6           ;               case 2:
 00E6           ;                       if(temp=='a')
 00E6 4136              cpi R20,97
 00E8 61F4              brne L25
 00EA                   .dbline 92
 00EA           ;                       {ready_rx=5;receivebox[1]|=0xf0;RX_index = 14;}
 00EA                   .dbline 92
 00EA 85E0              ldi R24,5
 00EC 80930100          sts _ready_rx,R24
 00F0                   .dbline 92
 00F0 80910400          lds R24,_receivebox+1
 00F4 806F              ori R24,240
 00F6 80930400          sts _receivebox+1,R24
 00FA                   .dbline 92
 00FA 8EE0              ldi R24,14
 00FC 80934900          sts _RX_index,R24
 0100                   .dbline 92
 0100 C7C0              xjmp L13
 0102           L25:

⌨️ 快捷键说明

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