📄 feedis_uart.lis
字号:
.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 + -