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

📄 i2cbus.lst

📁 renasas m16c上实现iic通信的源代码.
💻 LST
📖 第 1 页 / 共 5 页
字号:
* M16C FAMILY ASSEMBLER *   SOURCE LIST       Mon Sep 10 15:02:41 2001  PAGE 001

  SEQ.  LOC.   OBJ.              0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4

     1                                  ;;; ./i2cbus.a30 start
     2  00000004h                       IICIPL	.equ	4		; IPL
     3  00000001h                       DEBUG	.equ	1		;
     4                                  .if	DEBUG == 1		; 
     5  000003F1h                       dp	.equ	3f1h		;
     6  000003F3h                       ddp	.equ	3f3h		;
     7                                  .endif				;
     8                                  ;;; *****************************************************************************
     9                                  ;;; PLEASE do not edit this file.  Make changes for Main Clock Speed, Clock Devisor, 
    10                                  ;;;	and Baudrate in I2C.H header file. 
    11                                  ;;;	System Name : IIC-BUS F/W Ver1.00 (Sample I2C device driver)
    12                                  ;;; Summary		: M16C/62 revise IIC-BUS F/W ( clock is set in I2C.H header file (NO WAIT).)
    13                                  ;;;				: Multi Master
    14                                  ;;;				: BaudRate: Set in I2C.H file. 
    15                                  ;;;				: Disable of Features address and 10Bit address.
    16                                  ;;;				: This program supports only C-language interface.
    17                                  ;;;				: This program can support only transmit/receive in a slave
    18                                  ;;;				  as a combination format.
    19                                  ;;;				: It cannot connect C-Bus and M3Low and etc.
    20                                  ;;;				: This program cannot generate Sr.
    21                                  ;;;				: This program doesn't do whole failure restoration.
    22                                  ;;; Date		: 08/JAN/'99 (FRI)
    23                                  ;;; Object File Name : i2cbus.a30
    24                                  ;;; MCU Type	: M3062xMx
    25                                  ;;; Author		: Copyright 1997-1999 	MITSUBISHI ELECTRIC CORPORATION
    26                                  ;;;				: 						MITSUBISHI ELECTRIC
    27                                  ;;;				:						And MITSUBISHI ELECT
    28                                  ;;;				: 						SEMICONDUCTOR SYSTEM
    29                                  ;;; -----------------------------------------------------------------------------
    30                                  ;;; IPL SET
    31  00000004h                       STSPIPL	.equ	IICIPL		;	IPL of stop condition.
    32  00000003h                       S2RIPL	.equ	IICIPL-1	;	IPL of UART2 receive INT parity level.
    33                                  ;;; 
    34                                  	.glb	_iic_ini		;	Initialization function.
    35                                  	.glb	_iic_stop		;	I2C bus disable.
    36                                  	.glb	_iic_mr_start	;	Master receive start.
    37                                  	.glb	_iic_mw_start	;	Master write start.
    38                                  	.glb	$iic_mw_end		;	Master write end.
    39                                  	.glb	$iic_mr_end		;	Master read end.
    40                                  	.glb	stsp_int		;	Stop start condition interrupt.
    41                                  	.glb	u2rcv_int		;	Uart 2 received interrupt "ACK"
    42                                  ;;; ---------------------------------------------------------------------------
    43                                  ;;
    44                                  ;;
    45  00000376h                       U2SMR2	.equ	376h		;	UART2 Special Mode Register 2.
    46  00000377h                       U2SMR	.equ	377h		;	UART2 special mode register.
    47                                  ;;; UART2
    48  00000378h                       U2MR	.equ	378h		;	UART2 transmit / receive mode register.
    49  00000379h                       U2BRG	.equ	379h		;	UART2 bit rate generator.
    50  0000037Ah                       U2TB	.equ	37ah		;	UART2 transmit buffer register.
    51  0000037Ch                       U2C0	.equ	37ch		;	UART2 transmit / receive control register 0.
    52  0000037Dh                       U2C1	.equ	37dh		;	UART2 transmit / receive control register 1.
    53  0000037Eh                       U2RB	.equ	37eh		;	UART2 receive buffer register. 
    54                                  ;;
    55  0000004Ah                       STSPIC	.equ	004ah		;	Bus collision detection interrupt control register
    56  00000050h                       S2RIC	.equ	0050h		;	UART2 receive interrupt control register(ACK).
    57                                  ;;
    58  000003EDh                       P7	.equ	3edh			;	Port 7 register. 
    59  000003EFh                       PD7	.equ	3efh			;	M16C port 7 directional register. 
    60                                  ;;; -----------------------------------------------------------------------------
    61                                  	.section iicbus,data,align
    62                                  	.align
* M16C FAMILY ASSEMBLER *   SOURCE LIST       Mon Sep 10 15:02:41 2001  PAGE 002

  SEQ.  LOC.   OBJ.              0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4

    63  00000(000002H)                  mw_data:	.blkw	1		;	Master transmit data start address. 
    64  00002(000002H)                  mr_data:	.blkw	1		;	Master receive data start address.
    65  00004(000002H)                  slave_ram:	.blkw	1		;	Transmission data start address for slave.
    66  00006(000001H)                  mw_lng:		.blkb	1		;	Master write data length.
    67  00007(000001H)                  mr_lng:		.blkb	1		;  	Master read data length.
    68  00008(000001H)                  md_cnt:		.blkb	1		;	Master transmit/receive data counter.
    69  00009(000001H)                  sd_p:		.blkb	1		;	Slave data counter. 
    70  0000A(000001H)                  mw_target:	.blkb	1		;	Master transmit address. 
    71  0000B(000001H)                  mr_target:	.blkb	1		;	Master receive address.
    72  0000C(000001H)                  id_adr:		.blkb	1		;	ID address (CHIP DEVICE ID). 
    73                                  ;;-- Symbols declared in i2c.c ---------------------------------------------------
    74                                  .glb	_del_2usec
    75                                  .glb	_del_4usec
    76                                  .glb	_del_5usec
    77                                  .glb	_del_15usec
    78                                  .glb	_del_20usec
    79                                  .glb	_i2c_baudrate
    80                                  ;;; ---------------------------------------------------------------------------
    81  0000D(000001H)                  m_iic:		.blkb	1		;  I2C bus mode condition.
    82                                  							;  00:	Wait mode stop to start condition. 
    83                                  							;  02:  Master transmission mode. 
    84                                  							;  03:  Master receive mode
    85                                  							;  04:	Slave transmit mode.
    86                                  							;  05   Slave receive mode.
    87                                  							;  bit0 0:Write,1:Read
    88                                  							;  bit1 0:NM 1:Master
    89                                  							;  bit2 0:NM 1:Slave
    90                                  ;;; ---------------------------------------------------------------------------
    91                                  	.section	program,code,align
    92                                  ;;; ***************************************************************************
    93                                  ;;; ***************************************************************************
    94                                  ;;; void iic_ini(R0L,A0)
    95                                  ;;;						I2C Bus Initialization 
    96                                  ;;; --------------------------------------------------------------------------
    97                                  	.align					;
    98  00000                           _iic_ini:					;
    99                                  .if	DEBUG == 1				; 	---DEBUG---
   100  00000  7E9F881F                 	bset	0,dp			; 	---DEBUG---
   101                                  .endif						; 	---DEBUG---
   102  00004  EB32                     	pushc	FLG				;	Push Flag register on to stack. 	
   103  00006  EB65                     	fclr	I				;	Disable interrupts. 
   104                                  ;;; for C
   105  00008  937F                  S  	and.b	#7fh,R0H		;	 
   106  0000A  070000r               S  	mov.b	R0H,id_adr		;	Set ID "Device" address for slave mode. 
   107  0000D  734F0000r                	mov.w	A0,slave_ram	;	Set Slave transmit data start address. 
   108                                  ;;
   109  00011  97FCEF03              S  	and.b	#0fch,PD7		;	Set PD7 to input mode SDA and SCL.
   110                                  ;;
   111  00015  C7017703              S  	mov.b	#01h,U2SMR		;	Set U2SMR to I2C mode. 
   112  00019  C7D17603              S  	mov.b	#0d1h,U2SMR2	;	Set to I2C mode, Clock Synch. disable, SCL wait output disab
   113                                  							;	UART2 init. bit enabled, SCL wait ou
   114                                  							;	impedance, and Start/stop condition 
   115                                  ;;
   116  0001D  7E9F681F                 	bset	0,P7			;	Set SDA output to high impedance.  
   117  00021  C70A7803              S  	mov.b	#0ah,U2MR		;	Set to external clock and I2C mode.  
   118  00025  72FF0000r7903            	mov.b	_i2c_baudrate,U2BRG		; 	Set baudrate.  _i2c_baudrate is define in i2
   119  0002B  C7907C03              S  	mov.b	#90h,U2C0		;	Set MSB format for I2C mode. 
   120  0002F  C7057D03              S  	mov.b	#05h,U2C1		;	Transmit and Reception authorized.  
   121                                  ;;
   122  00033  B74A00                Z  	mov.b	#00h,STSPIC		;	Init. disable STSP interrupts.
   123  00036  C7035000              S  	mov.b	#S2RIPL,S2RIC	;	UART2 receive interrupt enable.
   124                                  ;;
* M16C FAMILY ASSEMBLER *   SOURCE LIST       Mon Sep 10 15:02:41 2001  PAGE 003

  SEQ.  LOC.   OBJ.              0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4

   125  0003A  B70000r               Z  	mov.b	#00h,m_iic		;	Init. slave wait mode counter
   126  0003D  B70000r               Z  	mov.b	#00h,md_cnt		;	Init. master data counter. 
   127  00040  B70000r               Z  	mov.b	#00h,sd_p		;	Init. slave data counter. 
   128  00043  EB33                     	popc	FLG				;	Pop flag register. 
   129                                  .if	DEBUG == 1				; 	---DEBUG---
   130  00045  7E8F881F                 	bclr	0,dp			; 	---DEBUG---
   131                                  .endif						; 	---DEBUG---
   132  00049  F3                       	rts			;
   133                                  ;;; ***************************************************************************
   134                                  ;;; ***************************************************************************
   135                                  ;;; unsigned char iic_kill(void)
   136                                  ;;			Disable I2C Bus.   Return values are;
   137                                  ;;								0:	Stop I2C function completed.
   138                                  ;;								1:	Cannot stop I2C operation, b
   139                                  ;;									M16C is currently performing
   140                                  ;;; --------------------------------------------------------------------------
   141                                  	.align					;
   142  0004A                           _iic_stop:					;
   143                                  .if	DEBUG == 1				; ---DEBUG---
   144  0004A  7E9F881F                 	bset	0,dp			; ---DEBUG---
   145                                  .endif						; ---DEBUG---
   146  0004E  EB32                     	pushc	FLG				;	Push Flag register on to stack.
   147  00050  EB65                     	fclr	I				;	Disable interrupt.
   148  00052  7EBF0000r                	btst	1,m_iic			;	Bit test for master or slave operation. 
   149  00056  6A05                     	jz	iic_stop_slave		;	If Slave mode jump to iic_stop_slave (line #161). 
   150  00058                           iic_stop_master:			;
   151  00058  C401                  S  	mov.b	#01h,R0L		;	Disable I2C mode. 
   152  0005A  FE1D                  B  	jmp	iic_stop_common		;	Jump to iic_stop_common (line #171).
   153  0005C                           iic_stop_slave:				;

⌨️ 快捷键说明

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