📄 sci.lis
字号:
0072 .dbline 61
0072 ; }
0072 ;
0072 ;
0072 ; BYTE ReadCommT0(BYTE time)
0072 ; {
0072 .dbline 62
0072 ; timerCounter = 0;
0072 2224 clr R2
0074 20920000 sts _timerCounter,R2
0078 04C0 xjmp L19
007A L18:
007A .dbline 64
007A ; while(timerCounter<time)
007A ; {
007A .dbline 65
007A ; if(UCSR0A & (1<<RXC0))
007A 5F9B sbis 0xb,7
007C 02C0 rjmp L21
007E .dbline 66
007E ; return UDR0;
007E 0CB1 in R16,0xc
0080 05C0 xjmp L17
0082 L21:
0082 .dbline 67
0082 L19:
0082 .dbline 63
0082 20900000 lds R2,_timerCounter
0086 2016 cp R2,R16
0088 C0F3 brlo L18
008A .dbline 69
008A ; }
008A ;
008A ; return 0;
008A 0027 clr R16
008C .dbline -2
008C L17:
008C .dbline 0 ; func end
008C 0895 ret
008E .dbsym r time 16 c
008E .dbend
008E .dbfunc e OpenComm1 _OpenComm1 fV
.even
008E _OpenComm1::
008E .dbline -1
008E .dbline 73
008E ; }
008E ;
008E ; void OpenComm1 (void)
008E ; {
008E .dbline -2
008E L23:
008E .dbline 0 ; func end
008E 0895 ret
0090 .dbend
0090 .dbfunc e WriteComm1 _WriteComm1 fV
0090 ; c -> R16
.even
0090 _WriteComm1::
0090 .dbline -1
0090 .dbline 87
0090 ; //设置波特率19200
0090 ; //UBRRL = 0x0B; //set baud rate lo
0090 ; //UBRRH = 0x00; //set baud rate hi
0090 ; //设置帧格式: 8个数据位, 1个停止位
0090 ; //UCSRC = (1<<URSEL)|(3<<UCSZ0);
0090 ; //接收器与发送器使能
0090 ; //UCSRB = (1<<RXEN)|(1<<TXEN|1<<RXCIE);
0090 ; //UCSRB = (1<<RXEN)|(1<<TXEN);
0090 ; }
0090 ;
0090 ;
0090 ;
0090 ; void WriteComm1 (BYTE c)
0090 ; {
0090 L25:
0090 .dbline 88
0090 L26:
0090 .dbline 88
0090 ; while( !(UCSR1A & (1<<UDRE1)) );
0090 159B sbis 0x2,5
0092 FECF rjmp L25
0094 .dbline 89
0094 ; UDR1=c;
0094 03B9 out 0x3,R16
0096 .dbline -2
0096 L24:
0096 .dbline 0 ; func end
0096 0895 ret
0098 .dbsym r c 16 c
0098 .dbend
0098 .dbfunc e WriteCommStr1 _WriteCommStr1 fV
0098 ; str -> R20,R21
.even
0098 _WriteCommStr1::
0098 0E940000 xcall push_gset1
009C A801 movw R20,R16
009E .dbline -1
009E .dbline 92
009E ; }
009E ; void WriteCommStr1 (char* str)
009E ; {
009E 05C0 xjmp L30
00A0 L29:
00A0 .dbline 94
00A0 .dbline 95
00A0 FA01 movw R30,R20
00A2 0081 ldd R16,z+0
00A4 F5DF xcall _WriteComm1
00A6 .dbline 96
00A6 4F5F subi R20,255 ; offset = 1
00A8 5F4F sbci R21,255
00AA .dbline 97
00AA L30:
00AA .dbline 93
00AA ; while(*str)
00AA FA01 movw R30,R20
00AC 2080 ldd R2,z+0
00AE 2220 tst R2
00B0 B9F7 brne L29
00B2 .dbline -2
00B2 L28:
00B2 0E940000 xcall pop_gset1
00B6 .dbline 0 ; func end
00B6 0895 ret
00B8 .dbsym r str 20 pc
00B8 .dbend
00B8 .dbfunc e ReadComm1 _ReadComm1 fc
.even
00B8 _ReadComm1::
00B8 .dbline -1
00B8 .dbline 100
00B8 ; {
00B8 ; WriteComm1(*str);
00B8 ; str++;
00B8 ; }
00B8 ; }
00B8 ; BYTE ReadComm1 ()
00B8 ; {
00B8 L33:
00B8 .dbline 101
00B8 L34:
00B8 .dbline 101
00B8 ; while( !(UCSR1A & (1<<RXC1)) );
00B8 179B sbis 0x2,7
00BA FECF rjmp L33
00BC .dbline 102
00BC ; return UDR1;
00BC 03B1 in R16,0x3
00BE .dbline -2
00BE L32:
00BE .dbline 0 ; func end
00BE 0895 ret
00C0 .dbend
00C0 .dbfunc e ReadCommT1 _ReadCommT1 fc
00C0 ; time -> R16
.even
00C0 _ReadCommT1::
00C0 .dbline -1
00C0 .dbline 107
00C0 ; }
00C0 ;
00C0 ;
00C0 ; BYTE ReadCommT1(BYTE time)
00C0 ; {
00C0 .dbline 108
00C0 ; timerCounter = 0;
00C0 2224 clr R2
00C2 20920000 sts _timerCounter,R2
00C6 04C0 xjmp L38
00C8 L37:
00C8 .dbline 110
00C8 ; while(timerCounter<time)
00C8 ; {
00C8 .dbline 111
00C8 ; if(UCSR1A & (1<<RXC1))
00C8 179B sbis 0x2,7
00CA 02C0 rjmp L40
00CC .dbline 112
00CC ; return UDR1;
00CC 03B1 in R16,0x3
00CE 05C0 xjmp L36
00D0 L40:
00D0 .dbline 113
00D0 L38:
00D0 .dbline 109
00D0 20900000 lds R2,_timerCounter
00D4 2016 cp R2,R16
00D6 C0F3 brlo L37
00D8 .dbline 115
00D8 ; }
00D8 ;
00D8 ; return 0;
00D8 0027 clr R16
00DA .dbline -2
00DA L36:
00DA .dbline 0 ; func end
00DA 0895 ret
00DC .dbsym r time 16 c
00DC .dbend
00DC .dbfunc e setCommEventProc _setCommEventProc fV
00DC ; Proc -> R16,R17
.even
00DC _setCommEventProc::
00DC .dbline -1
00DC .dbline 120
00DC ; }
00DC ;
00DC ;
00DC ; void setCommEventProc (EventProc Proc)
00DC ; {
00DC .dbline 122
00DC ; // disable ();
00DC ; EvtProcedure = Proc;
00DC 10930100 sts _EvtProcedure+1,R17
00E0 00930000 sts _EvtProcedure,R16
00E4 .dbline -2
00E4 L42:
00E4 .dbline 0 ; func end
00E4 0895 ret
00E6 .dbsym r Proc 16 pfV
00E6 .dbend
.area func_lit
0000 0000 PL_CommDrvDefaultProc: .word `_CommDrvDefaultProc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -