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

📄 main.lis

📁 ATmega8/ATmega16异步串口UART通信实例,希望对大家学习AVR单片机有帮助
💻 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 + -