📄 mock_uart.lis
字号:
.module Mock_Uart.C
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\Mock_Uart.C
0000 .dbfunc e Timer0_init _Timer0_init fV
.even
0000 _Timer0_init::
0000 .dbline -1
0000 .dbline 17
0000 ;
0000 ; //模拟串口通讯
0000 ; #include"include.h"
0000 ;
0000 ; #define TX_LO() PORTD &= ~(1<<4) //发送端口
0000 ; #define TX_HI() PORTD |= (1<<4)
0000 ;
0000 ; #define RX_Port() (PIND&(1<<2)) //接收端口
0000 ;
0000 ; unsigned char F_TM;
0000 ;
0000 ; //TIMER0 initialize - prescale:8
0000 ; // WGM: Normal
0000 ; // desired value: 104uSec
0000 ; // actual value: 104.000uSec (0.0%)
0000 ; void Timer0_init(void)
0000 ; {
0000 .dbline 18
0000 ; TCCR0 = 0x00; //stop
0000 2224 clr R2
0002 23BE out 0x33,R2
0004 .dbline 19
0004 ; TCNT0 = 0x30; //set count
0004 80E3 ldi R24,48
0006 82BF out 0x32,R24
0008 .dbline 20
0008 ; OCR0 = 0xD0; //set compare
0008 80ED ldi R24,208
000A 8CBF out 0x3c,R24
000C .dbline -2
000C L2:
000C .dbline 0 ; func end
000C 0895 ret
000E .dbend
.area vector(rom, abs)
.org 36
0024 0C940700 jmp _Timer0_ovf_isr
.area text(rom, con, rel)
000E .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\Mock_Uart.C
000E .dbfunc e Timer0_ovf_isr _Timer0_ovf_isr fV
.even
000E _Timer0_ovf_isr::
000E 8A93 st -y,R24
0010 8FB7 in R24,0x3f
0012 8A93 st -y,R24
0014 .dbline -1
0014 .dbline 25
0014 ; }
0014 ;
0014 ; #pragma interrupt_handler Timer0_ovf_isr:10
0014 ; void Timer0_ovf_isr(void)
0014 ; {
0014 .dbline 26
0014 ; TCNT0 = 0x30; //reload counter value
0014 80E3 ldi R24,48
0016 82BF out 0x32,R24
0018 .dbline 27
0018 ; F_TM = 1;
0018 81E0 ldi R24,1
001A 80930800 sts _F_TM,R24
001E .dbline -2
001E L3:
001E .dbline 0 ; func end
001E 8991 ld R24,y+
0020 8FBF out 0x3f,R24
0022 8991 ld R24,y+
0024 1895 reti
0026 .dbend
0026 .dbfunc e PSendChar _PSendChar fV
0026 ; ii -> R20
0026 ; inch -> R16
.even
0026 _PSendChar::
0026 4A93 st -y,R20
0028 .dbline -1
0028 .dbline 33
0028 ; }
0028 ;
0028 ; //------------------------------------------------------------------------------
0028 ; //发送一个字符
0028 ; void PSendChar(unsigned char inch)
0028 ; {
0028 .dbline 35
0028 ; unsigned char ii;
0028 ; ii=0;
0028 4427 clr R20
002A .dbline 36
002A ; F_TM=0;
002A 2224 clr R2
002C 20920800 sts _F_TM,R2
0030 .dbline 37
0030 ; TX_LO(); //start bit
0030 9498 cbi 0x12,4
0032 .dbline 38
0032 ; TCCR0 = 0x02; //start timer
0032 82E0 ldi R24,2
0034 83BF out 0x33,R24
0036 L5:
0036 .dbline 39
0036 ; while(!F_TM);
0036 L6:
0036 .dbline 39
0036 20900800 lds R2,_F_TM
003A 2220 tst R2
003C E1F3 breq L5
003E X0:
003E 0EC0 xjmp L9
0040 L8:
0040 .dbline 41
0040 ; while(ii<8)
0040 ; {
0040 .dbline 42
0040 ; if(inch&1)
0040 00FF sbrs R16,0
0042 02C0 rjmp L11
0044 X1:
0044 .dbline 43
0044 ; {
0044 .dbline 44
0044 ; TX_HI();
0044 949A sbi 0x12,4
0046 .dbline 45
0046 ; }
0046 01C0 xjmp L12
0048 L11:
0048 .dbline 47
0048 ; else
0048 ; {
0048 .dbline 48
0048 ; TX_LO();
0048 9498 cbi 0x12,4
004A .dbline 49
004A ; }
004A L12:
004A .dbline 50
004A ; F_TM=0;
004A 2224 clr R2
004C 20920800 sts _F_TM,R2
0050 L13:
0050 .dbline 51
0050 ; while(!F_TM);
0050 L14:
0050 .dbline 51
0050 20900800 lds R2,_F_TM
0054 2220 tst R2
0056 E1F3 breq L13
0058 X2:
0058 .dbline 52
0058 ; ii++;
0058 4395 inc R20
005A .dbline 53
005A ; inch>>=1;
005A 0695 lsr R16
005C .dbline 54
005C ; }
005C L9:
005C .dbline 40
005C 4830 cpi R20,8
005E 80F3 brlo L8
0060 X3:
0060 .dbline 55
0060 ; TX_HI();
0060 949A sbi 0x12,4
0062 .dbline 56
0062 ; F_TM=0;
0062 2224 clr R2
0064 20920800 sts _F_TM,R2
0068 L16:
0068 .dbline 57
0068 ; while(!F_TM);
0068 L17:
0068 .dbline 57
0068 20900800 lds R2,_F_TM
006C 2220 tst R2
006E E1F3 breq L16
0070 X4:
0070 .dbline 58
0070 ; TCCR0 = 0x00; //stop//停止timer
0070 2224 clr R2
0072 23BE out 0x33,R2
0074 .dbline -2
0074 L4:
0074 .dbline 0 ; func end
0074 4991 ld R20,y+
0076 0895 ret
0078 .dbsym r ii 20 c
0078 .dbsym r inch 16 c
0078 .dbend
0078 .dbfunc e PGetChar _PGetChar fc
0078 ; rch -> R16
0078 ; ii -> R18
.even
0078 _PGetChar::
0078 .dbline -1
0078 .dbline 63
0078 ; }
0078 ; //------------------------------------------------------------------------------
0078 ; //接收一个字符
0078 ; unsigned char PGetChar()
0078 ; {
0078 .dbline 65
0078 ; unsigned char ii,rch;
0078 ; TCCR0 = 0x02; //start timer
0078 82E0 ldi R24,2
007A 83BF out 0x33,R24
007C .dbline 66
007C ; F_TM=0;
007C 2224 clr R2
007E 20920800 sts _F_TM,R2
0082 .dbline 67
0082 ; ii=0;
0082 2227 clr R18
0084 .dbline 68
0084 ; rch=0;
0084 0027 clr R16
0086 L20:
0086 .dbline 69
0086 ; while(!F_TM); //等过起始位
0086 L21:
0086 .dbline 69
0086 20900800 lds R2,_F_TM
008A 2220 tst R2
008C E1F3 breq L20
008E X5:
008E 0CC0 xjmp L24
0090 L23:
0090 .dbline 71
0090 ; while(ii<8)
0090 ; {
0090 .dbline 72
0090 ; rch>>=1;
0090 0695 lsr R16
0092 .dbline 73
0092 ; if(RX_Port())
0092 829B sbis 0x10,2
0094 01C0 rjmp L26
0096 X6:
0096 .dbline 74
0096 ; {
0096 .dbline 75
0096 ; rch|=0x80;
0096 0068 ori R16,128
0098 .dbline 76
0098 ; }
0098 L26:
0098 .dbline 77
0098 ; ii++;
0098 2395 inc R18
009A .dbline 78
009A ; F_TM=0;
009A 2224 clr R2
009C 20920800 sts _F_TM,R2
00A0 L28:
00A0 .dbline 79
00A0 ; while(!F_TM);
00A0 L29:
00A0 .dbline 79
00A0 20900800 lds R2,_F_TM
00A4 2220 tst R2
00A6 E1F3 breq L28
00A8 X7:
00A8 .dbline 80
00A8 ; }
00A8 L24:
00A8 .dbline 70
00A8 2830 cpi R18,8
00AA 90F3 brlo L23
00AC X8:
00AC .dbline 81
00AC ; F_TM=0;
00AC 2224 clr R2
00AE 20920800 sts _F_TM,R2
00B2 03C0 xjmp L32
00B4 L31:
00B4 .dbline 83
00B4 ; while(!F_TM)
00B4 ; {
00B4 .dbline 84
00B4 ; if(RX_Port())
00B4 829B sbis 0x10,2
00B6 01C0 rjmp L34
00B8 X9:
00B8 .dbline 85
00B8 ; {
00B8 .dbline 86
00B8 ; break;
00B8 04C0 xjmp L33
00BA L34:
00BA .dbline 88
00BA ; }
00BA ; }
00BA L32:
00BA .dbline 82
00BA 20900800 lds R2,_F_TM
00BE 2220 tst R2
00C0 C9F3 breq L31
00C2 X10:
00C2 L33:
00C2 .dbline 89
00C2 ; TCCR0 = 0x00; //stop//停止timer
00C2 2224 clr R2
00C4 23BE out 0x33,R2
00C6 .dbline 90
00C6 ; return rch;
00C6 .dbline -2
00C6 L19:
00C6 .dbline 0 ; func end
00C6 0895 ret
00C8 .dbsym r rch 16 c
00C8 .dbsym r ii 18 c
00C8 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\Mock_Uart.C
0000 L37:
0000 .blkb 2
.area text(rom, con, rel)
00C8 .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\Mock_Uart.C
00C8 .dbfunc e BUS_SendPacket_51Device _BUS_SendPacket_51Device fV
00C8 .dbstruct 0 260 Device51_StructOfProtocol
00C8 .dbfield 0 Address c
00C8 .dbfield 1 Length i
00C8 .dbfield 3 Command c
00C8 .dbfield 4 Data A[256:256]c
00C8 .dbend
00C8 .dbsym s C51_uart L37 pc
00C8 ; C51_buf -> R20,R21
00C8 ; CRC -> y+0
00C8 ; Count -> R20,R21
00C8 ; i -> R10
00C8 ; tmp -> R12
.even
00C8 _BUS_SendPacket_51Device::
00C8 0E940000 xcall push_xgset303C
00CC 2297 sbiw R28,2
00CE .dbline -1
00CE .dbline 96
00CE ; }
00CE ; //------------------------------------------------------------------------------
00CE ; //------------------------------------------------------------------------------
00CE ; //发送数据
00CE ; void BUS_SendPacket_51Device(void)
00CE ; {
00CE .dbline 101
00CE ; unsigned char i,tmp;
00CE ; unsigned int CRC,Count;
00CE ; static unsigned char *C51_uart;
00CE ; struct Device51_StructOfProtocol *C51_buf;
00CE ; C51max485_on();
00CE 969A sbi 0x12,6
00D0 .dbline 102
00D0 ; PSendChar(BOOT_CODE);
00D0 0EEF ldi R16,254
00D2 A9DF xcall _PSendChar
00D4 .dbline 103
00D4 ; PSendChar(BOOT_CODE);//发送引导码
00D4 0EEF ldi R16,254
00D6 A7DF xcall _PSendChar
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -