📄 system.s
字号:
.module System.c
.area text(rom, con, rel)
.dbfile D:\实例17_I2C抢答器_从机程序\System.c
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 64
; /*********************************************************/
; /* */
; /* 实例17 I2C抢答器 从机程序 */
; /* */
; /* 程序设计 江海波 */
; /* */
; /* 编写时间 : 2007-8 版本 : V1.0 */
; /* */
; /* 提示 : 代码受版权保护,示例程序用于工程应谨慎 */
; /* */
; /* E-mail : soundman@sohu.com */
; /*-------------------------------------------------------*/
; /* 硬件环境: */
; /* */
; /* 实验电路板,ATmega48单片机,CPU时钟1MHz */
; /* ------------------------------------------------------*/
; /* 软件环境: */
; /* */
; /* ICCAVR 6.31A */
; /* ------------------------------------------------------*/
; /* 最后修改时间: */
; /* */
; /*-------------------------------------------------------*/
; /* 历史版本纪录: */
; /* */
; /*********************************************************/
;
; /********************
; * 头 文 件 配 置 区 *
; ********************/
; # include "PF_Config.h"
;
; /********************
; * 系 统 宏 定 义 *
; ********************/
;
; /*------------------*
; * 常 数 宏 定 义 *
; *------------------*/
;
; /*------------------*
; * 动 作 宏 定 义 *
; *------------------*/
;
; /********************
; * 模块结构体定义区 *
; ********************/
;
; /********************
; * 模块函数声明区 *
; ********************/
;
; /********************
; * 模块变量声明区 *
; ********************/
;
; /***********************************************************
; * 函数说明:主函数 *
; * 输入: 无 *
; * 输出: 无 *
; * 调用函数:System_INIT() *
; ***********************************************************/
; void main(void)
; {
.dbline 65
; System_INIT(); //代码初始化
rcall _System_INIT
.dbline 67
;
; Time[0] = 0xB0;
ldi R24,176
sts _Time,R24
rjmp L3
L2:
.dbline 70
;
; while(1)
; {
.dbline 71
; if(TCCR1B != 0)
lds R2,129
tst R2
breq L5
.dbline 72
; {
.dbline 73
; if((PINB&0x01) == 0x00)
sbic 0x3,0
rjmp L7
.dbline 74
; {
.dbline 75
; TIMERSTOP;
clr R2
sts 129,R2
.dbline 76
; Time[0] = TCNT1H;
lds R2,133
sts _Time,R2
.dbline 77
; Time[1] = TCNT1L;
lds R2,132
sts _Time+1,R2
.dbline 78
; TWCR |= (1<<TWSTA); //启动总线
lds R24,188
ori R24,32
sts 188,R24
.dbline 79
; TWIProcess = TWIInProcess;
clr R2
sts _TWIProcess,R2
rjmp L11
L10:
.dbline 81
; while(TWIProcess != TWIProcessOver)
; {
.dbline 82
; if (TWIProcess == TWIPrecessHan)
lds R24,_TWIProcess
cpi R24,49
brne L13
.dbline 83
; TWCR |= (1<<TWSTA); //再次尝试竞争总线
lds R24,188
ori R24,32
sts 188,R24
L13:
.dbline 84
; if (TWIProcess == TWIProcessERR)
lds R24,_TWIProcess
cpi R24,33
brne L15
.dbline 85
; continue;
L15:
.dbline 86
L11:
.dbline 80
lds R24,_TWIProcess
cpi R24,1
brne L10
.dbline 87
; }
; }
L7:
.dbline 88
; }
L5:
.dbline 89
L3:
.dbline 69
rjmp L2
X0:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -