📄 uart.s
字号:
.module UART.c
.area data(ram, con, rel)
_Rx_counter::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.dbsym e Rx_counter _Rx_counter c
_Tx_counter::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.dbsym e Tx_counter _Tx_counter c
_Tx_data_buf::
.blkb 2
.area idata
.byte 222,'o
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 'd,50
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 20,10
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 5,2
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 1,22
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.dbsym e Tx_data_buf _Tx_data_buf A[10:10]c
_UART0_TX_flag::
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.dbsym e UART0_TX_flag _UART0_TX_flag c
_UART0_RX_flag::
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.dbsym e UART0_RX_flag _UART0_RX_flag c
_Type_flag::
.blkb 1
.area idata
.byte 4
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.dbsym e Type_flag _Type_flag c
_LED_table::
.blkb 2
.area idata
.byte 63,6
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 91,'O
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 'f,'m
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 125,7
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 127,'o
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 'w,124
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 57,94
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 'y,'q
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 'v,56
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 55,62
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 's,92
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.blkb 2
.area idata
.byte 64,0
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.dbsym e LED_table _LED_table A[24:24]c
.area vector(rom, abs)
.org 80
jmp _UART0_TX_INT
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.area vector(rom, abs)
.org 72
jmp _UART0_RX_INT
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.area vector(rom, abs)
.org 4
jmp _External_INT_0
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.area vector(rom, abs)
.org 8
jmp _External_INT_1
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.area vector(rom, abs)
.org 12
jmp _External_INT_2
.area data(ram, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.area text(rom, con, rel)
.dbfile C:\AVR\486E6~1.4网\UART.c
.dbfunc e main _main fV
; i -> R22
.even
_main::
.dbline -1
.dbline 85
; #include <iom128.h>
; #include <macros.h>
;
; #define Red_LED_on PORTB&~BIT(0)
; #define Red_LED_off PORTB|(1<<0)
; #define Green_LED_on PORTB&(~(1<<1))
; #define Green_LED_off PORTB|(1<<1)
; #define Yellow_LED_on PORTB&(~(1<<2))
; #define Yellow_LED_off PORTB|(1<<2)
;
;
; //UART
; unsigned char Rx_counter = 0;
; unsigned char Tx_counter = 0;
; unsigned char Tx_data_buf[] = {222,111,100,50,20,10,5,2,1,22};
; unsigned char Tx_data;
; unsigned char Rx_data_buf[12];
; unsigned char Rx_data;
; unsigned char UART0_TX_flag = 1;
; unsigned char UART0_RX_flag = 1;
; unsigned char Type_flag = 4;
; //Display
; unsigned char number_bai;
; unsigned char number_shi;
; unsigned char number_ge ;
; unsigned char Display_type;
; unsigned char Display_value;
; unsigned char LED_table[]=
; {
; 0x3F, //"0"
; 0x06, //"1"
; 0x5B, //"2"
; 0x4F, //"3"
; 0x66, //"4"
; 0x6D, //"5"
; 0x7D, //"6"
; 0x07, //"7"
; 0x7F, //"8"
; 0x6F, //"9"
; 0x77, //"A"
; 0x7C, //"B"
; 0x39, //"C"
; 0x5E, //"D"
; 0x79, //"E"
; 0x71, //"F"
; 0x76, //"H"
; 0x38, //"L"
; 0x37, //"n"
; 0x3E, //"u"
; 0x73, //"P"
; 0x5C, //"o"
; 0x40, //"-"
; 0x00, //熄灭
; };
;
; //use for test;
; unsigned char m;
;
; //define Interrupt Vactor
;
; #pragma interrupt_handler UART0_TX_INT:21 //外部中断0
; #pragma interrupt_handler UART0_RX_INT:19 //外部中断1
; #pragma interrupt_handler External_INT_0:2 //外部中断0
; #pragma interrupt_handler External_INT_1:3 //外部中断1
; #pragma interrupt_handler External_INT_2:4 //外部中断2
;
; //pre_define
;
; void Port_initialize(void);
; void INT_initialize(void);
; void UART_initialize(void);
;
; void UART0_TX_INT(void);
; void UART0_RX_INT(void);
; void External_INT_0(void);
; void External_INT_1(void);
; void External_INT_2(void);
;
; void LED_Display(unsigned char Type,unsigned char Data);
; void DATA_to_NUM(unsigned char data);
; void Delay(void);
;
;
; void main(void)
; {
.dbline 88
; unsigned char i;
;
; Port_initialize();
xcall _Port_initialize
.dbline 89
; UART_initialize();
xcall _UART_initialize
.dbline 90
; INT_initialize();
xcall _INT_initialize
.dbline 92
;
; for (; ; )
L2:
.dbline 93
; {
.dbline 94
; switch (Type_flag)
lds R20,_Type_flag
clr R21
cpi R20,0
cpc R20,R21
breq L9
X0:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L10
cpi R20,2
ldi R30,0
cpc R21,R30
breq L11
cpi R20,3
ldi R30,0
cpc R21,R30
breq L12
xjmp L6
X1:
.dbline 95
; {
L9:
.dbline 97
; case 0: //发送的数值
; {
.dbline 98
; Display_type = 0;
clr R2
sts _Display_type,R2
.dbline 99
; Display_value = Tx_data;
lds R2,_Tx_data
sts _Display_value,R2
.dbline 101
;
; }break;
.dbline 101
xjmp L7
L10:
.dbline 104
;
; case 1: //发送计数
; {
.dbline 105
; Display_type = 1;
ldi R24,1
sts _Display_type,R24
.dbline 106
; Display_value = Tx_counter;
lds R2,_Tx_counter
sts _Display_value,R2
.dbline 108
;
; }break;
.dbline 108
xjmp L7
L11:
.dbline 111
;
; case 2: //接收的数值
; {
.dbline 112
; Display_type = 2;
ldi R24,2
sts _Display_type,R24
.dbline 113
; Display_value = Rx_data;
lds R2,_Rx_data
sts _Display_value,R2
.dbline 115
;
; }break;
.dbline 115
xjmp L7
L12:
.dbline 118
;
; case 3: //接收计数
; {
.dbline 119
; Display_type = 3;
ldi R24,3
sts _Display_type,R24
.dbline 120
; Display_value = Rx_counter;
lds R2,_Rx_counter
sts _Display_value,R2
.dbline 122
;
; }break;
.dbline 122
xjmp L7
L6:
.dbline 125
;
; default:
; {
.dbline 126
; Display_type = 0x0f;
ldi R24,15
sts _Display_type,R24
.dbline 128
;
; }break;
.dbline 128
L7:
.dbline 131
; }
;
; LED_Display(Display_type,Display_value); //数码管显示
lds R18,_Display_value
lds R16,_Display_type
xcall _LED_Display
.dbline 133
;
; if (UART0_TX_flag == 0)
lds R2,_UART0_TX_flag
tst R2
brne L13
.dbline 134
; {
.dbline 135
; PORTB = Red_LED_on;
cbi 0x18,0
.dbline 137
;
; for (i=0;i<10 ;i++ )
clr R22
xjmp L18
L15:
.dbline 138
.dbline 139
xcall _Delay
.dbline 140
L16:
.dbline 137
inc R22
L18:
.dbline 137
cpi R22,10
brlo L15
.dbline 142
; {
; Delay();
; }
;
; UART0_TX_flag = 1;
ldi R24,1
sts _UART0_TX_flag,R24
.dbline 143
; }
xjmp L14
L13:
.dbline 145
; else
; {
.dbline 146
; PORTB = Red_LED_off;
sbi 0x18,0
.dbline 147
; }
L14:
.dbline 149
;
; if (UART0_RX_flag == 0)
lds R2,_UART0_RX_flag
tst R2
brne L19
.dbline 150
; {
.dbline 151
; PORTB = Green_LED_on;
cbi 0x18,1
.dbline 153
;
; for (i=0;i<10 ;i++ )
clr R22
xjmp L24
L21:
.dbline 154
.dbline 155
xcall _Delay
.dbline 156
L22:
.dbline 153
inc R22
L24:
.dbline 153
cpi R22,10
brlo L21
.dbline 158
; {
; Delay();
; }
;
; UART0_RX_flag = 1;
ldi R24,1
sts _UART0_RX_flag,R24
.dbline 159
; }
xjmp L2
L19:
.dbline 161
.dbline 162
sbi 0x18,1
.dbline 163
.dbline 164
.dbline 92
.dbline 92
xjmp L2
X2:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r i 22 c
.dbend
.dbfunc e Port_initialize _Port_initialize fV
.even
_Port_initialize::
.dbline -1
.dbline 168
; else
; {
; PORTB = Green_LED_off;
; }
; }
; }
;
; void Port_initialize(void)
; {
.dbline 169
; DDRA = 0xFF;
ldi R24,255
out 0x1a,R24
.dbline 170
; DDRB = 0xFF;
out 0x17,R24
.dbline 171
; DDRD = 0x00;
clr R2
out 0x11,R2
.dbline 172
; PORTB = 0xFF;
out 0x18,R24
.dbline -2
L25:
.dbline 0 ; func end
ret
.dbend
.dbfunc e INT_initialize _INT_initialize fV
.even
_INT_initialize::
.dbline -1
.dbline 175
; }
; void INT_initialize(void)
; {
.dbline 176
; EICRA = 0xaa; //fall edge trigger
ldi R24,170
sts 106,R24
.dbline 177
; EICRB = 0x00; //no influence
clr R2
out 0x3a,R2
.dbline 178
; EIMSK = 0x0f;
ldi R24,15
out 0x39,R24
.dbline 180
;
; SEI();
sei
.dbline -2
L26:
.dbline 0 ; func end
ret
.dbend
.dbfunc e UART_initialize _UART_initialize fV
.even
_UART_initialize::
.dbline -1
.dbline 184
;
; }
; void UART_initialize(void)
; {
.dbline 185
; CLI();
cli
.dbline 187
;
; UBRR0H = 0x00;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -