⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 softuart.lst

📁 AVR单片机软件模拟串口实现全双工的例子。
💻 LST
📖 第 1 页 / 共 2 页
字号:
   1               		.file	"softuart.c"
   2               		.arch atmega8
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  17               	.Ltext0:
  18               	.global	__vector_9
  20               	__vector_9:
  21               	.LFB2:
  22               	.LM1:
  23               	/* prologue: frame size=0 */
  24 0000 1F92      		push __zero_reg__
  25 0002 0F92      		push __tmp_reg__
  26 0004 0FB6      		in __tmp_reg__,__SREG__
  27 0006 0F92      		push __tmp_reg__
  28 0008 1124      		clr __zero_reg__
  29 000a 8F93      		push r24
  30 000c 9F93      		push r25
  31 000e EF93      		push r30
  32 0010 FF93      		push r31
  33               	/* prologue end (size=9) */
  34               	.LM2:
  35 0012 81EC      		ldi r24,lo8(-63)
  36 0014 82BF      		out 82-0x20,r24
  37               	.LM3:
  38 0016 8091 0000 		lds r24,flag_tx_ready
  39 001a 8823      		tst r24
  40 001c 01F0      		breq .L2
  41               	.LM4:
  42 001e 8091 0000 		lds r24,timer_tx_ctr
  43               	.LVL0:
  44               	.LM5:
  45 0022 8150      		subi r24,lo8(-(-1))
  46 0024 01F4      		brne .L4
  47               	.LM6:
  48 0026 8091 0000 		lds r24,internal_tx_buffer
  49 002a 9091 0000 		lds r25,(internal_tx_buffer)+1
  50               	.LVL1:
  51 002e 80FF      		sbrs r24,0
  52 0030 00C0      		rjmp .L6
  53               	.LM7:
  54 0032 979A      		sbi 50-0x20,7
  55 0034 00C0      		rjmp .L8
  56               	.L6:
  57               	.LM8:
  58 0036 9798      		cbi 50-0x20,7
  59               	.L8:
  60               	.LM9:
  61 0038 8091 0000 		lds r24,internal_tx_buffer
  62 003c 9091 0000 		lds r25,(internal_tx_buffer)+1
  63 0040 9695      		lsr r25
  64 0042 8795      		ror r24
  65 0044 9093 0000 		sts (internal_tx_buffer)+1,r25
  66 0048 8093 0000 		sts internal_tx_buffer,r24
  67               	.LM10:
  68 004c 8091 0000 		lds r24,bits_left_in_tx
  69 0050 8150      		subi r24,lo8(-(-1))
  70 0052 8093 0000 		sts bits_left_in_tx,r24
  71 0056 8091 0000 		lds r24,bits_left_in_tx
  72 005a 8823      		tst r24
  73 005c 01F4      		brne .L25
  74               	.LM11:
  75 005e 1092 0000 		sts flag_tx_ready,__zero_reg__
  76               	.L25:
  77 0062 83E0      		ldi r24,lo8(3)
  78               	.LVL2:
  79               	.L4:
  80               	.LM12:
  81 0064 8093 0000 		sts timer_tx_ctr,r24
  82               	.L2:
  83               	.LM13:
  84 0068 8091 0000 		lds r24,flag_rx_off
  85               	.LVL3:
  86 006c 8823      		tst r24
  87 006e 01F0      		breq .+2
  88 0070 00C0      		rjmp .L24
  89               	.LM14:
  90 0072 8091 0000 		lds r24,flag_rx_waiting_for_stop_bit.1380
  91 0076 8823      		tst r24
  92 0078 01F0      		breq .L13
  93               	.LM15:
  94 007a 8091 0000 		lds r24,timer_rx_ctr.1382
  95 007e 8150      		subi r24,lo8(-(-1))
  96 0080 8093 0000 		sts timer_rx_ctr.1382,r24
  97 0084 8823      		tst r24
  98 0086 01F0      		breq .+2
  99 0088 00C0      		rjmp .L24
 100               	.LM16:
 101 008a 1092 0000 		sts flag_rx_waiting_for_stop_bit.1380,__zero_reg__
 102               	.LM17:
 103 008e 1092 0000 		sts flag_rx_ready,__zero_reg__
 104               	.LM18:
 105 0092 E091 0000 		lds r30,qin
 106 0096 FF27      		clr r31
 107 0098 8091 0000 		lds r24,internal_rx_buffer.1384
 108 009c E050      		subi r30,lo8(-(inbuf))
 109 009e F040      		sbci r31,hi8(-(inbuf))
 110 00a0 8083      		st Z,r24
 111               	.LM19:
 112 00a2 8091 0000 		lds r24,qin
 113 00a6 8F5F      		subi r24,lo8(-(1))
 114 00a8 8093 0000 		sts qin,r24
 115 00ac 8091 0000 		lds r24,qin
 116 00b0 8032      		cpi r24,lo8(32)
 117 00b2 00F0      		brlo .L24
 118               	.LM20:
 119 00b4 1092 0000 		sts qin,__zero_reg__
 120 00b8 00C0      		rjmp .L24
 121               	.L13:
 122               	.LM21:
 123 00ba 8091 0000 		lds r24,flag_rx_ready
 124 00be 8823      		tst r24
 125 00c0 01F4      		brne .L17
 126               	.LM22:
 127 00c2 8699      		sbic 48-0x20,6
 128 00c4 00C0      		rjmp .L24
 129               	.LM23:
 130 00c6 81E0      		ldi r24,lo8(1)
 131 00c8 8093 0000 		sts flag_rx_ready,r24
 132               	.LM24:
 133 00cc 1092 0000 		sts internal_rx_buffer.1384,__zero_reg__
 134               	.LM25:
 135 00d0 94E0      		ldi r25,lo8(4)
 136 00d2 9093 0000 		sts timer_rx_ctr.1382,r25
 137               	.LM26:
 138 00d6 98E0      		ldi r25,lo8(8)
 139 00d8 9093 0000 		sts bits_left_in_rx.1383,r25
 140               	.LM27:
 141 00dc 8093 0000 		sts rx_mask.1381,r24
 142 00e0 00C0      		rjmp .L24
 143               	.L17:
 144               	.LM28:
 145 00e2 8091 0000 		lds r24,timer_rx_ctr.1382
 146 00e6 8150      		subi r24,lo8(-(-1))
 147 00e8 8093 0000 		sts timer_rx_ctr.1382,r24
 148 00ec 8823      		tst r24
 149 00ee 01F4      		brne .L24
 150               	.LM29:
 151 00f0 83E0      		ldi r24,lo8(3)
 152 00f2 8093 0000 		sts timer_rx_ctr.1382,r24
 153               	.LM30:
 154 00f6 869B      		sbis 48-0x20,6
 155 00f8 00C0      		rjmp .L21
 156               	.LM31:
 157 00fa 8091 0000 		lds r24,internal_rx_buffer.1384
 158 00fe 9091 0000 		lds r25,rx_mask.1381
 159 0102 892B      		or r24,r25
 160 0104 8093 0000 		sts internal_rx_buffer.1384,r24
 161               	.L21:
 162               	.LM32:
 163 0108 8091 0000 		lds r24,rx_mask.1381
 164 010c 880F      		lsl r24
 165 010e 8093 0000 		sts rx_mask.1381,r24
 166               	.LM33:
 167 0112 8091 0000 		lds r24,bits_left_in_rx.1383
 168 0116 8150      		subi r24,lo8(-(-1))
 169 0118 8093 0000 		sts bits_left_in_rx.1383,r24
 170 011c 8823      		tst r24
 171 011e 01F4      		brne .L24
 172               	.LM34:
 173 0120 81E0      		ldi r24,lo8(1)
 174 0122 8093 0000 		sts flag_rx_waiting_for_stop_bit.1380,r24
 175               	.L24:
 176               	/* epilogue: frame size=0 */
 177 0126 FF91      		pop r31
 178 0128 EF91      		pop r30
 179 012a 9F91      		pop r25
 180 012c 8F91      		pop r24
 181 012e 0F90      		pop __tmp_reg__
 182 0130 0FBE      		out __SREG__,__tmp_reg__
 183 0132 0F90      		pop __tmp_reg__
 184 0134 1F90      		pop __zero_reg__
 185 0136 1895      		reti
 186               	/* epilogue end (size=9) */
 187               	/* function __vector_9 size 157 (139) */
 188               	.LFE2:
 190               	.global	softuart_init
 192               	softuart_init:
 193               	.LFB5:
 194               	.LM35:
 195               	/* prologue: frame size=0 */
 196               	/* prologue end (size=0) */
 197               	.LM36:
 198 0138 1092 0000 		sts flag_tx_ready,__zero_reg__
 199               	.LM37:
 200 013c 1092 0000 		sts flag_rx_ready,__zero_reg__
 201               	.LM38:
 202 0140 1092 0000 		sts flag_rx_off,__zero_reg__
 203               	.LM39:
 204 0144 979A      		sbi 50-0x20,7
 205               	.LBB6:
 206               	.LBB7:
 207               	.LM40:
 208 0146 8F9A      		sbi 49-0x20,7
 209               	.LM41:
 210 0148 8E98      		cbi 49-0x20,6
 211               	.LBE7:
 212               	.LBE6:
 213               	.LBB8:
 214               	.LBB9:
 215               	.LM42:
 216 014a 9FB7      		in r25,95-0x20
 217               	.LVL4:
 218               	.LM43:
 219               	/* #APP */
 220 014c F894      		cli
 221               	.LM44:
 222               	/* #NOAPP */
 223 014e 82E0      		ldi r24,lo8(2)
 224 0150 83BF      		out 83-0x20,r24
 225               	.LM45:
 226 0152 89B7      		in r24,89-0x20
 227 0154 8160      		ori r24,lo8(1)
 228 0156 89BF      		out 89-0x20,r24
 229               	.LM46:
 230 0158 12BE      		out 82-0x20,__zero_reg__
 231               	.LM47:
 232 015a 9FBF      		out 95-0x20,r25
 233               	.LBE9:
 234               	.LBE8:
 235               	/* epilogue: frame size=0 */
 236 015c 0895      		ret
 237               	/* epilogue end (size=1) */
 238               	/* function softuart_init size 20 (19) */
 239               	.LFE5:
 241               	.global	softuart_turn_rx_on
 243               	softuart_turn_rx_on:
 244               	.LFB7:
 245               	.LM48:
 246               	/* prologue: frame size=0 */
 247               	/* prologue end (size=0) */
 248               	.LM49:
 249 015e 1092 0000 		sts flag_rx_off,__zero_reg__
 250               	/* epilogue: frame size=0 */
 251 0162 0895      		ret
 252               	/* epilogue end (size=1) */
 253               	/* function softuart_turn_rx_on size 3 (2) */
 254               	.LFE7:
 256               	.global	softuart_turn_rx_off
 258               	softuart_turn_rx_off:
 259               	.LFB8:
 260               	.LM50:
 261               	/* prologue: frame size=0 */
 262               	/* prologue end (size=0) */
 263               	.LM51:
 264 0164 81E0      		ldi r24,lo8(1)
 265 0166 8093 0000 		sts flag_rx_off,r24

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -