?? 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 + -