📄 sci.s
字号:
.module sci.c
.area text(rom, con, rel)
.dbfile F:\mydoc\avrproject\icc\big162\gpseep\sci.c
.dbfunc s CommDrvDefaultProc _CommDrvDefaultProc fV
; value -> R0
.even
_CommDrvDefaultProc:
.dbline -1
.dbline 5
; #include "sci.h"
;
;
;
; static void CommDrvDefaultProc (register BYTE value) { (void) value; };
.dbline 5
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym l value 0 c
.dbend
.area data(ram, con, rel)
.dbfile F:\mydoc\avrproject\icc\big162\gpseep\sci.c
_EvtProcedure:
.blkw 1
.area idata
.word PL_CommDrvDefaultProc
.area data(ram, con, rel)
.dbfile F:\mydoc\avrproject\icc\big162\gpseep\sci.c
.dbsym s EvtProcedure _EvtProcedure pfV
.area vector(rom, abs)
.org 76
jmp _UART0_RX_interrupt
.area data(ram, con, rel)
.dbfile F:\mydoc\avrproject\icc\big162\gpseep\sci.c
.area text(rom, con, rel)
.dbfile F:\mydoc\avrproject\icc\big162\gpseep\sci.c
.dbfunc e UART0_RX_interrupt _UART0_RX_interrupt fV
.even
_UART0_RX_interrupt::
xcall push_lset
.dbline -1
.dbline 14
; static void (* EvtProcedure) (register BYTE value) = CommDrvDefaultProc;
; // Byte pointers of the ring buffer (FIFO)
;
;
;
; #pragma interrupt_handler UART0_RX_interrupt:20
;
; void UART0_RX_interrupt( void )
; {
.dbline 16
; //BYTE a=UDR0;
; EvtProcedure(UDR0);
in R16,0xc
lds R30,_EvtProcedure
lds R31,_EvtProcedure+1
xcall xicall
.dbline 17
; PORTD ^= BIT(STA);
ldi R24,32
in R2,0x12
eor R2,R24
out 0x12,R2
.dbline -2
L2:
xcall pop_lset
.dbline 0 ; func end
reti
.dbend
.area vector(rom, abs)
.org 80
jmp _UART1_RX_interrupt
.area text(rom, con, rel)
.dbfile F:\mydoc\avrproject\icc\big162\gpseep\sci.c
.dbfunc e UART1_RX_interrupt _UART1_RX_interrupt fV
.even
_UART1_RX_interrupt::
xcall push_lset
.dbline -1
.dbline 25
; //WriteComm1(a);///////////////////////////
; }
;
;
; #pragma interrupt_handler UART1_RX_interrupt:21
;
; void UART1_RX_interrupt( void )
; {
.dbline 26
; WriteComm0(UDR1);
in R16,0x3
xcall _WriteComm0
.dbline 27
; PORTD ^= BIT(STC);
ldi R24,64
in R2,0x12
eor R2,R24
out 0x12,R2
.dbline -2
L3:
xcall pop_lset
.dbline 0 ; func end
reti
.dbend
.dbfunc e OpenComm0 _OpenComm0 fV
.even
_OpenComm0::
.dbline -1
.dbline 32
; }
;
;
; void OpenComm0 (void)
; {
.dbline -2
L4:
.dbline 0 ; func end
ret
.dbend
.dbfunc e WriteComm0 _WriteComm0 fV
; c -> R16
.even
_WriteComm0::
.dbline -1
.dbline 39
;
; }
;
;
;
; void WriteComm0 (BYTE c)
; {
L6:
.dbline 40
L7:
.dbline 40
; while( !(UCSR0A & (1<<UDRE0)) );
sbis 0xb,5
rjmp L6
.dbline 41
; UDR0=c;
out 0xc,R16
.dbline 42
; PORTD ^= BIT(STA);
ldi R24,32
in R2,0x12
eor R2,R24
out 0x12,R2
.dbline -2
L5:
.dbline 0 ; func end
ret
.dbsym r c 16 c
.dbend
.dbfunc e WriteCommStr0 _WriteCommStr0 fV
; str -> R20,R21
.even
_WriteCommStr0::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 46
; //WriteComm1 (c);//////////////////////test
; }
; void WriteCommStr0 (char* str)
; {
xjmp L11
L10:
.dbline 48
.dbline 49
movw R30,R20
ldd R16,z+0
xcall _WriteComm0
.dbline 50
subi R20,255 ; offset = 1
sbci R21,255
.dbline 51
L11:
.dbline 47
; while(*str)
movw R30,R20
ldd R2,z+0
tst R2
brne L10
.dbline -2
L9:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r str 20 pc
.dbend
.dbfunc e ReadComm0 _ReadComm0 fc
.even
_ReadComm0::
.dbline -1
.dbline 54
; {
; WriteComm0(*str);
; str++;
; }
; }
; BYTE ReadComm0 ()
; {
L14:
.dbline 55
L15:
.dbline 55
; while( !(UCSR0A & (1<<RXC0)) );
sbis 0xb,7
rjmp L14
.dbline 56
; return UDR0;
in R16,0xc
.dbline -2
L13:
.dbline 0 ; func end
ret
.dbend
.dbfunc e ReadCommT0 _ReadCommT0 fc
; time -> R16
.even
_ReadCommT0::
.dbline -1
.dbline 61
; }
;
;
; BYTE ReadCommT0(BYTE time)
; {
.dbline 62
; timerCounter = 0;
clr R2
sts _timerCounter,R2
xjmp L19
L18:
.dbline 64
; while(timerCounter<time)
; {
.dbline 65
; if(UCSR0A & (1<<RXC0))
sbis 0xb,7
rjmp L21
.dbline 66
; return UDR0;
in R16,0xc
xjmp L17
L21:
.dbline 67
L19:
.dbline 63
lds R2,_timerCounter
cp R2,R16
brlo L18
.dbline 69
; }
;
; return 0;
clr R16
.dbline -2
L17:
.dbline 0 ; func end
ret
.dbsym r time 16 c
.dbend
.dbfunc e OpenComm1 _OpenComm1 fV
.even
_OpenComm1::
.dbline -1
.dbline 73
; }
;
; void OpenComm1 (void)
; {
.dbline -2
L23:
.dbline 0 ; func end
ret
.dbend
.dbfunc e WriteComm1 _WriteComm1 fV
; c -> R16
.even
_WriteComm1::
.dbline -1
.dbline 87
; //设置波特率19200
; //UBRRL = 0x0B; //set baud rate lo
; //UBRRH = 0x00; //set baud rate hi
; //设置帧格式: 8个数据位, 1个停止位
; //UCSRC = (1<<URSEL)|(3<<UCSZ0);
; //接收器与发送器使能
; //UCSRB = (1<<RXEN)|(1<<TXEN|1<<RXCIE);
; //UCSRB = (1<<RXEN)|(1<<TXEN);
; }
;
;
;
; void WriteComm1 (BYTE c)
; {
L25:
.dbline 88
L26:
.dbline 88
; while( !(UCSR1A & (1<<UDRE1)) );
sbis 0x2,5
rjmp L25
.dbline 89
; UDR1=c;
out 0x3,R16
.dbline -2
L24:
.dbline 0 ; func end
ret
.dbsym r c 16 c
.dbend
.dbfunc e WriteCommStr1 _WriteCommStr1 fV
; str -> R20,R21
.even
_WriteCommStr1::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 92
; }
; void WriteCommStr1 (char* str)
; {
xjmp L30
L29:
.dbline 94
.dbline 95
movw R30,R20
ldd R16,z+0
xcall _WriteComm1
.dbline 96
subi R20,255 ; offset = 1
sbci R21,255
.dbline 97
L30:
.dbline 93
; while(*str)
movw R30,R20
ldd R2,z+0
tst R2
brne L29
.dbline -2
L28:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r str 20 pc
.dbend
.dbfunc e ReadComm1 _ReadComm1 fc
.even
_ReadComm1::
.dbline -1
.dbline 100
; {
; WriteComm1(*str);
; str++;
; }
; }
; BYTE ReadComm1 ()
; {
L33:
.dbline 101
L34:
.dbline 101
; while( !(UCSR1A & (1<<RXC1)) );
sbis 0x2,7
rjmp L33
.dbline 102
; return UDR1;
in R16,0x3
.dbline -2
L32:
.dbline 0 ; func end
ret
.dbend
.dbfunc e ReadCommT1 _ReadCommT1 fc
; time -> R16
.even
_ReadCommT1::
.dbline -1
.dbline 107
; }
;
;
; BYTE ReadCommT1(BYTE time)
; {
.dbline 108
; timerCounter = 0;
clr R2
sts _timerCounter,R2
xjmp L38
L37:
.dbline 110
; while(timerCounter<time)
; {
.dbline 111
; if(UCSR1A & (1<<RXC1))
sbis 0x2,7
rjmp L40
.dbline 112
; return UDR1;
in R16,0x3
xjmp L36
L40:
.dbline 113
L38:
.dbline 109
lds R2,_timerCounter
cp R2,R16
brlo L37
.dbline 115
; }
;
; return 0;
clr R16
.dbline -2
L36:
.dbline 0 ; func end
ret
.dbsym r time 16 c
.dbend
.dbfunc e setCommEventProc _setCommEventProc fV
; Proc -> R16,R17
.even
_setCommEventProc::
.dbline -1
.dbline 120
; }
;
;
; void setCommEventProc (EventProc Proc)
; {
.dbline 122
; // disable ();
; EvtProcedure = Proc;
sts _EvtProcedure+1,R17
sts _EvtProcedure,R16
.dbline -2
L42:
.dbline 0 ; func end
ret
.dbsym r Proc 16 pfV
.dbend
.area func_lit
PL_CommDrvDefaultProc: .word `_CommDrvDefaultProc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -