📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile D:\AVR\我的程序\异步串口UART实验/cfg.h
0000 .dbfunc e delay_ms _delay_ms fV
0000 ; i -> R20,R21
0000 ; time -> R16,R17
.even
0000 _delay_ms::
0000 0E940000 xcall push_gset1
0004 .dbline -1
0004 .dbline 10
0004 ; /***********************************
0004 ; *实验目的:熟悉UART编程
0004 ; *设 计:萧联珠
0004 ; *日 期:2007-11-20
0004 ; ************************************/
0004 ; #include <iom16v.h>
0004 ; #include "cfg.h"
0004 ;
0004 ; void main()
0004 ; {
0004 .dbline 12
0004 ; char num;
0004 ; unsigned int i;
0004 0AC0 xjmp L5
0006 L2:
0006 .dbline 13
0006 4427 clr R20
0008 5527 clr R21
000A L6:
000A .dbline 13
000A L7:
000A .dbline 13
000A 4F5F subi R20,255 ; offset = 1
000C 5F4F sbci R21,255
000E .dbline 13
000E 4436 cpi R20,100
0010 E0E0 ldi R30,0
0012 5E07 cpc R21,R30
0014 D4F3 brlt L6
0016 L3:
0016 .dbline 12
0016 0150 subi R16,1
0018 1040 sbci R17,0
001A L5:
001A .dbline 12
001A 2224 clr R2
001C 3324 clr R3
001E 2016 cp R2,R16
0020 3106 cpc R3,R17
0022 8CF3 brlt L2
0024 .dbline -2
0024 L1:
0024 0E940000 xcall pop_gset1
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbsym r i 20 I
002A .dbsym r time 16 I
002A .dbend
002A .dbfunc e port_init _port_init fV
.even
002A _port_init::
002A .dbline -1
002A .dbline 18
002A ; port_init();
002A ; uart_init();
002A ;
002A ; while(1)
002A ; {
002A ; num=UDR;
002A .dbline 19
002A ; if((num=='a')|(num=='A')) //假如接收到A或a则发送0到9
002A 8D9A sbi 0x11,5
002C .dbline 20
002C ; {
002C 959A sbi 0x12,5
002E .dbline -2
002E L10:
002E .dbline 0 ; func end
002E 0895 ret
0030 .dbend
0030 .dbfunc e uart_init _uart_init fV
.even
0030 _uart_init::
0030 .dbline -1
0030 .dbline 25
0030 ; UCSRB|=(1<<TXEN); //发送使能
0030 ; while(!(UCSRA&(1<<UDRE))); //等待发送准备完备
0030 ; for(i=0;i<10;i++)
0030 ; {
0030 ; UDR=i;
0030 .dbline 26
0030 ; while(!(UCSRA&(1<<UDRE)));
0030 82E0 ldi R24,2
0032 8BB9 out 0xb,R24
0034 .dbline 27
0034 ; }
0034 88E1 ldi R24,24
0036 8AB9 out 0xa,R24
0038 .dbline 28
0038 ; }
0038 86E0 ldi R24,6
003A 80BD out 0x20,R24
003C .dbline 29
003C ; else if(num=='8') //假如接收到8则停止发送数据
003C 2224 clr R2
003E 20BC out 0x20,R2
0040 .dbline 30
0040 ; UCSRB&=~(1<<TXEN);
0040 8CE0 ldi R24,12
0042 89B9 out 0x9,R24
0044 .dbline -2
0044 L11:
0044 .dbline 0 ; func end
0044 0895 ret
0046 .dbend
0046 .dbfile D:\AVR\我的程序\异步串口UART实验\main.c
0046 .dbfunc e main _main fV
0046 ; num -> R20
0046 ; i -> R22,R23
.even
0046 _main::
0046 .dbline -1
0046 .dbline 10
0046 .dbline 13
0046 F1DF xcall _port_init
0048 .dbline 14
0048 F3DF xcall _uart_init
004A 30C0 xjmp L14
004C L13:
004C .dbline 17
004C .dbline 18
004C 4CB1 in R20,0xc
004E .dbline 19
004E 4136 cpi R20,97
0050 21F4 brne L18
0052 81E0 ldi R24,1
0054 90E0 ldi R25,0
0056 5C01 movw R10,R24
0058 02C0 xjmp L19
005A L18:
005A AA24 clr R10
005C BB24 clr R11
005E L19:
005E 4134 cpi R20,65
0060 19F4 brne L20
0062 61E0 ldi R22,1
0064 70E0 ldi R23,0
0066 02C0 xjmp L21
0068 L20:
0068 6627 clr R22
006A 7727 clr R23
006C L21:
006C 1501 movw R2,R10
006E 262A or R2,R22
0070 372A or R3,R23
0072 2220 tst R2
0074 11F4 brne X0
0076 3320 tst R3
0078 81F0 breq L16
007A X0:
007A .dbline 20
007A .dbline 21
007A 539A sbi 0xa,3
007C L22:
007C .dbline 22
007C L23:
007C .dbline 22
007C 5D9B sbis 0xb,5
007E FECF rjmp L22
0080 .dbline 23
0080 6627 clr R22
0082 7727 clr R23
0084 05C0 xjmp L28
0086 L25:
0086 .dbline 24
0086 .dbline 25
0086 6CB9 out 0xc,R22
0088 L29:
0088 .dbline 26
0088 L30:
0088 .dbline 26
0088 5D9B sbis 0xb,5
008A FECF rjmp L29
008C .dbline 27
008C L26:
008C .dbline 23
008C 6F5F subi R22,255 ; offset = 1
008E 7F4F sbci R23,255
0090 L28:
0090 .dbline 23
0090 6A30 cpi R22,10
0092 E0E0 ldi R30,0
0094 7E07 cpc R23,R30
0096 B8F3 brlo L25
0098 .dbline 28
0098 09C0 xjmp L17
009A L16:
009A .dbline 29
009A 4833 cpi R20,56
009C 11F4 brne L32
009E .dbline 30
009E 5398 cbi 0xa,3
00A0 05C0 xjmp L33
00A2 L32:
00A2 .dbline 32
00A2 ; else //否则轰鸣器报警
00A2 ; {
00A2 .dbline 33
00A2 ; PORTD|=1<<PD5;
00A2 959A sbi 0x12,5
00A4 .dbline 34
00A4 ; delay_ms(100);
00A4 04E6 ldi R16,100
00A6 10E0 ldi R17,0
00A8 ABDF xcall _delay_ms
00AA .dbline 35
00AA ; PORTD&=~(1<<PD5);
00AA 9598 cbi 0x12,5
00AC .dbline 36
00AC ; }
00AC L33:
00AC L17:
00AC .dbline 37
00AC L14:
00AC .dbline 16
00AC CFCF xjmp L13
00AE X1:
00AE .dbline -2
00AE L12:
00AE .dbline 0 ; func end
00AE 0895 ret
00B0 .dbsym r num 20 c
00B0 .dbsym r i 22 i
00B0 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -