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

📄 system.lis

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 LIS
字号:
                        .module System.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\实例17_I2C抢答器_从机程序\System.c
 0000                   .dbfunc e main _main fV
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 64
 0000           ; /*********************************************************/
 0000           ; /*                                                       */
 0000           ; /*             实例17 I2C抢答器 从机程序                 */
 0000           ; /*                                                       */
 0000           ; /*                 程序设计 江海波                       */
 0000           ; /*                                                       */
 0000           ; /*        编写时间 : 2007-8      版本 : V1.0             */
 0000           ; /*                                                       */
 0000           ; /*     提示 : 代码受版权保护,示例程序用于工程应谨慎      */
 0000           ; /*                                                       */
 0000           ; /*           E-mail : soundman@sohu.com                  */
 0000           ; /*-------------------------------------------------------*/
 0000           ; /* 硬件环境:                                             */
 0000           ; /*                                                       */
 0000           ; /*     实验电路板,ATmega48单片机,CPU时钟1MHz             */
 0000           ; /* ------------------------------------------------------*/
 0000           ; /* 软件环境:                                             */
 0000           ; /*                                                       */
 0000           ; /*     ICCAVR 6.31A                                      */
 0000           ; /* ------------------------------------------------------*/
 0000           ; /* 最后修改时间:                                         */
 0000           ; /*                                                       */
 0000           ; /*-------------------------------------------------------*/
 0000           ; /* 历史版本纪录:                                         */
 0000           ; /*                                                       */
 0000           ; /*********************************************************/
 0000           ; 
 0000           ; /********************
 0000           ; * 头 文 件 配 置 区 *
 0000           ; ********************/
 0000           ; # include "PF_Config.h"
 0000           ; 
 0000           ; /********************
 0000           ; *   系 统 宏 定 义  *
 0000           ; ********************/
 0000           ; 
 0000           ; /*------------------*
 0000           ; *   常 数 宏 定 义  *
 0000           ; *------------------*/
 0000           ; 
 0000           ; /*------------------*
 0000           ; *   动 作 宏 定 义  *
 0000           ; *------------------*/
 0000           ; 
 0000           ; /********************
 0000           ; *  模块结构体定义区 *
 0000           ; ********************/
 0000           ; 
 0000           ; /********************
 0000           ; *   模块函数声明区  *
 0000           ; ********************/
 0000           ; 
 0000           ; /********************
 0000           ; *   模块变量声明区  *
 0000           ; ********************/
 0000           ; 
 0000           ; /***********************************************************
 0000           ; *   函数说明:主函数                                       *
 0000           ; *   输入:    无                                           *
 0000           ; *   输出:    无                                           *
 0000           ; *   调用函数:System_INIT()                                *
 0000           ; ***********************************************************/
 0000           ; void main(void)
 0000           ; {
 0000                   .dbline 65
 0000           ;     System_INIT();                                          //代码初始化
 0000 00D0              rcall _System_INIT
 0002                   .dbline 67
 0002           ;     
 0002           ;     Time[0] = 0xB0;
 0002 80EB              ldi R24,176
 0004 80930000          sts _Time,R24
 0008 2BC0              rjmp L3
 000A           L2:
 000A                   .dbline 70
 000A           ; 
 000A           ;     while(1)
 000A           ;     {
 000A                   .dbline 71
 000A           ;         if(TCCR1B != 0)
 000A 20908100          lds R2,129
 000E 2220              tst R2
 0010 39F1              breq L5
 0012                   .dbline 72
 0012           ;         {
 0012                   .dbline 73
 0012           ;             if((PINB&0x01) == 0x00)
 0012 1899              sbic 0x3,0
 0014 25C0              rjmp L7
 0016                   .dbline 74
 0016           ;             {
 0016                   .dbline 75
 0016           ;                 TIMERSTOP;
 0016 2224              clr R2
 0018 20928100          sts 129,R2
 001C                   .dbline 76
 001C           ;                 Time[0] = TCNT1H;
 001C 20908500          lds R2,133
 0020 20920000          sts _Time,R2
 0024                   .dbline 77
 0024           ;                 Time[1] = TCNT1L;
 0024 20908400          lds R2,132
 0028 20920100          sts _Time+1,R2
 002C                   .dbline 78
 002C           ;                 TWCR |= (1<<TWSTA);                 //启动总线
 002C 8091BC00          lds R24,188
 0030 8062              ori R24,32
 0032 8093BC00          sts 188,R24
 0036                   .dbline 79
 0036           ;                 TWIProcess = TWIInProcess;
 0036 2224              clr R2
 0038 20920000          sts _TWIProcess,R2
 003C 0DC0              rjmp L11
 003E           L10:
 003E                   .dbline 81
 003E           ;                 while(TWIProcess != TWIProcessOver)
 003E           ;                 {
 003E                   .dbline 82
 003E           ;                     if (TWIProcess == TWIPrecessHan)
 003E 80910000          lds R24,_TWIProcess
 0042 8133              cpi R24,49
 0044 29F4              brne L13
 0046                   .dbline 83
 0046           ;                         TWCR |= (1<<TWSTA);         //再次尝试竞争总线
 0046 8091BC00          lds R24,188
 004A 8062              ori R24,32
 004C 8093BC00          sts 188,R24
 0050           L13:
 0050                   .dbline 84
 0050           ;                     if (TWIProcess == TWIProcessERR)
 0050 80910000          lds R24,_TWIProcess
 0054 8132              cpi R24,33
 0056 01F4              brne L15
 0058                   .dbline 85
 0058           ;                         continue;
 0058           L15:
 0058                   .dbline 86
 0058           L11:
 0058                   .dbline 80
 0058 80910000          lds R24,_TWIProcess
 005C 8130              cpi R24,1
 005E 79F7              brne L10
 0060                   .dbline 87
 0060           ;                 }
 0060           ;             }
 0060           L7:
 0060                   .dbline 88
 0060           ;         }
 0060           L5:
 0060                   .dbline 89
 0060           L3:
 0060                   .dbline 69
 0060 D4CF              rjmp L2
 0062           X0:
 0062                   .dbline -2
 0062           L1:
 0062                   .dbline 0 ; func end
 0062 0895              ret
 0064                   .dbend

⌨️ 快捷键说明

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