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

📄 main.lis

📁 一个关于AVR单片机的例程
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\桌面\ds18b20\main.c
 0000                   .dbfunc e USART_Init _USART_Init fV
 0000           ;            tmp -> R10,R11
 0000           ;           baud -> R10,R11
                        .even
 0000           _USART_Init::
 0000 0E940000          xcall push_gset3
 0004 5801              movw R10,R16
 0006                   .dbline -1
 0006                   .dbline 20
 0006           ; /****************************************Copyright (c)**************************************************
 0006           ; **                                杭 州 鑫 高 科 技 有 限 公 司
 0006           ; **                                     开     发      部
 0006           ; **                                 http://www.hzxingao.com
 0006           ; ** 文   件   名: main.c
 0006           ; ** 最后修改日期: 2005年05月11日
 0006           ; ** 描        述: 
 0006           ; ** 版      本: V1.0
 0006           ; ** 主  控  芯 片:M16  晶振频率:7.3728MHZ, 波特率19200
 0006           ; **********************************************************************************************************/
 0006           ; #include <iom16v.h>
 0006           ; #include <macros.h>
 0006           ; #include "define.h"
 0006           ; #include "function.h"
 0006           ; #include "para.h"
 0006           ; 
 0006           ; #define F_CPU 7372800
 0006           ; 
 0006           ; void USART_Init( unsigned int baud )
 0006           ; {
 0006                   .dbline 23
 0006           ; unsigned int tmp;
 0006           ; /* 设置波特率*/
 0006           ; tmp= F_CPU/baud/16-1;
 0006 1501              movw R2,R10
 0008 4424              clr R4
 000A 5524              clr R5
 000C 40E0              ldi R20,0
 000E 50E8              ldi R21,128
 0010 60E7              ldi R22,112
 0012 70E0              ldi R23,0
 0014 5A92              st -y,R5
 0016 4A92              st -y,R4
 0018 3A92              st -y,R3
 001A 2A92              st -y,R2
 001C 8A01              movw R16,R20
 001E 9B01              movw R18,R22
 0020 0E940000          xcall div32s
 0024 40E1              ldi R20,16
 0026 50E0              ldi R21,0
 0028 60E0              ldi R22,0
 002A 70E0              ldi R23,0
 002C 7A93              st -y,R23
 002E 6A93              st -y,R22
 0030 5A93              st -y,R21
 0032 4A93              st -y,R20
 0034 0E940000          xcall div32s
 0038 1801              movw R2,R16
 003A 2901              movw R4,R18
 003C 41E0              ldi R20,1
 003E 50E0              ldi R21,0
 0040 60E0              ldi R22,0
 0042 70E0              ldi R23,0
 0044 241A              sub R2,R20
 0046 350A              sbc R3,R21
 0048 460A              sbc R4,R22
 004A 570A              sbc R5,R23
 004C 5101              movw R10,R2
 004E                   .dbline 24
 004E           ; UBRRH = (unsigned char)(tmp>>8);
 004E 232C              mov R2,R3
 0050 3324              clr R3
 0052 20BC              out 0x20,R2
 0054                   .dbline 25
 0054           ; UBRRL = (unsigned char)tmp;
 0054 A9B8              out 0x9,R10
 0056                   .dbline 27
 0056           ; /* 接收器与发送器使能*/
 0056           ; UCSRB = (1<<RXEN)|(1<<TXEN);
 0056 88E1              ldi R24,24
 0058 8AB9              out 0xa,R24
 005A                   .dbline 29
 005A           ; /* 设置帧格式: 8 个数据位, 2 个停止位*/
 005A           ; UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ0)|(1<<UCSZ1);
 005A 8EE8              ldi R24,142
 005C 80BD              out 0x20,R24
 005E                   .dbline -2
 005E           L1:
 005E 0E940000          xcall pop_gset3
 0062                   .dbline 0 ; func end
 0062 0895              ret
 0064                   .dbsym r tmp 10 i
 0064                   .dbsym r baud 10 i
 0064                   .dbend
 0064                   .dbfunc e USART_Transmit _USART_Transmit fV
 0064           ;           data -> R16
                        .even
 0064           _USART_Transmit::
 0064                   .dbline -1
 0064                   .dbline 34
 0064           ; }
 0064           ; 
 0064           ; // 数据发送【发送5 到8 位数据位的帧】
 0064           ; void USART_Transmit( unsigned char data )
 0064           ; {
 0064           L3:
 0064                   .dbline 37
 0064           L4:
 0064                   .dbline 36
 0064           ; /* 等待发送缓冲器为空 */
 0064           ; while ( !( UCSRA & (1<<UDRE)) )
 0064 5D9B              sbis 0xb,5
 0066 FECF              rjmp L3
 0068                   .dbline 39
 0068           ; ;
 0068           ; /* 将数据放入缓冲器,发送数据 */
 0068           ; UDR = data;
 0068 0CB9              out 0xc,R16
 006A                   .dbline -2
 006A           L2:
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbsym r data 16 c
 006C                   .dbend
 006C                   .dbfunc e delay _delay fV
 006C           ;              i -> R20,R21
                        .even
 006C           _delay::
 006C 0E940000          xcall push_gset1
 0070                   .dbline -1
 0070                   .dbline 44
 0070           ; } 
 0070           ; 
 0070           ; 
 0070           ; void delay(void)
 0070           ; {
 0070                   .dbline 46
 0070           ;  unsigned int i;
 0070           ;  for(i=1255;i!=0;i--)
 0070 47EE              ldi R20,1255
 0072 54E0              ldi R21,4
 0074 05C0              xjmp L10
 0076           L7:
 0076                   .dbline 47
 0076 0FEF              ldi R16,255
 0078 0E940000          xcall _delayUs
 007C           L8:
 007C                   .dbline 46
 007C 4150              subi R20,1
 007E 5040              sbci R21,0
 0080           L10:
 0080                   .dbline 46
 0080 4030              cpi R20,0
 0082 4507              cpc R20,R21
 0084 C1F7              brne L7
 0086           X0:
 0086                   .dbline -2
 0086           L6:
 0086 0E940000          xcall pop_gset1
 008A                   .dbline 0 ; func end
 008A 0895              ret
 008C                   .dbsym r i 20 i
 008C                   .dbend
 008C                   .dbfunc e main _main fV
 008C           ;           temp -> R20
                        .even
 008C           _main::
 008C                   .dbline -1
 008C                   .dbline 54
 008C           ;   delayUs(255);
 008C           ; }
 008C           ; 
 008C           ; 
 008C           ; WORD i;
 008C           ; 
 008C           ; void main()
 008C           ; {
 008C                   .dbline 56
 008C           ; 
 008C           ;    unsigned char temp=0;
 008C 4427              clr R20
 008E                   .dbline 58
 008E           ; 
 008E           ;       port_init();
 008E 0E940000          xcall _port_init
 0092                   .dbline 60
 0092           ;       
 0092           ;       USART_Init(9600); //波特率9600 初始化串口
 0092 00E8              ldi R16,9600
 0094 15E2              ldi R17,37
 0096 B4DF              xcall _USART_Init
 0098                   .dbline 61
 0098           ;       USART_Transmit('O');
 0098 0FE4              ldi R16,79
 009A E4DF              xcall _USART_Transmit
 009C                   .dbline 62
 009C           ;       USART_Transmit('K');
 009C 0BE4              ldi R16,75
 009E E2DF              xcall _USART_Transmit
 00A0 29C0              xjmp L13
 00A2           L12:
 00A2                   .dbline 65
 00A2           ; 
 00A2           ;       while(1)
 00A2           ;       {
 00A2                   .dbline 66
 00A2           ;        USART_Transmit(0x0d); //发送一个回车
 00A2 0DE0              ldi R16,13
 00A4 DFDF              xcall _USART_Transmit
 00A6                   .dbline 67
 00A6           ;        USART_Transmit(0x0a); //发送一个换行
 00A6 0AE0              ldi R16,10
 00A8 DDDF              xcall _USART_Transmit
 00AA                   .dbline 68
 00AA           ;        i=resetDS18B20();
 00AA 0E940000          xcall _resetDS18B20
 00AE 202E              mov R2,R16
 00B0 3324              clr R3
 00B2 30920100          sts _i+1,R3
 00B6 20920000          sts _i,R2
 00BA                   .dbline 69
 00BA           ;        i=readTempDS18B20();
 00BA 0E940000          xcall _readTempDS18B20
 00BE 10930100          sts _i+1,R17
 00C2 00930000          sts _i,R16
 00C6                   .dbline 70
 00C6           ;        if(i&(1<<3)) //判断倒数第四位是1还是0 
 00C6 03FF              sbrs R16,3
 00C8 06C0              rjmp L15
 00CA                   .dbline 71
 00CA           ;        {
 00CA                   .dbline 72
 00CA           ;         temp=i>>4+1;
 00CA 25E0              ldi R18,5
 00CC 30E0              ldi R19,0
 00CE 0E940000          xcall lsr16
 00D2 402F              mov R20,R16
 00D4                   .dbline 73
 00D4           ;        }
 00D4 0CC0              xjmp L16
 00D6           L15:
 00D6                   .dbline 75
 00D6           ;        else
 00D6           ;        {
 00D6                   .dbline 76
 00D6           ;         temp=i>>4;
 00D6 40910000          lds R20,_i
 00DA 50910100          lds R21,_i+1
 00DE 5695              lsr R21
 00E0 4795              ror R20
 00E2 5695              lsr R21
 00E4 4795              ror R20
 00E6 5695              lsr R21
 00E8 4795              ror R20
 00EA 5695              lsr R21
 00EC 4795              ror R20
 00EE                   .dbline 77
 00EE           ;        }
 00EE           L16:
 00EE                   .dbline 78
 00EE 042F              mov R16,R20
 00F0 B9DF              xcall _USART_Transmit
 00F2                   .dbline 79
 00F2 BCDF              xcall _delay
 00F4                   .dbline 80
 00F4           L13:
 00F4                   .dbline 64
 00F4 D6CF              xjmp L12
 00F6           X1:
 00F6                   .dbline -2
 00F6           L11:
 00F6                   .dbline 0 ; func end
 00F6 0895              ret
 00F8                   .dbsym r temp 20 c
 00F8                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\桌面\ds18b20\main.c
 0000           _i::
 0000                   .blkb 2
 0002                   .dbsym e i _i i

⌨️ 快捷键说明

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