📄 system.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 + -