📄 ina90_h source file1.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0075)http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h-source.html -->
<HTML><HEAD><TITLE>ina90.h Source File</TITLE>
<META http-equiv=Content-Type content=text/html;charset=iso-8859-1><LINK
href="ina90_h Source File1.files/doxygen.css" type=text/css rel=stylesheet>
<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff><!-- Generated by Doxygen 1.2.8.1 -->
<CENTER><A class=qindex
href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/main.html">Main
Page</A> <A class=qindex
href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/annotated.html">Compound
List</A> <A class=qindex
href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/files.html">File
List</A> <A class=qindex
href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/functions.html">Compound
Members</A> <A class=qindex
href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/globals.html">File
Members</A> </CENTER>
<HR>
<H1>ina90.h</H1><A
href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html">Go
to the documentation of this file.</A>
<DIV class=fragment><PRE>00001 <FONT class=comment>/*</FONT>
00002 <FONT class=comment> ina90.h</FONT>
00003 <FONT class=comment></FONT>
00004 <FONT class=comment> Contributors:</FONT>
00005 <FONT class=comment> Created by Marek Michalkiewicz <marekm@linux.org.pl></FONT>
00006 <FONT class=comment></FONT>
00007 <FONT class=comment> THIS SOFTWARE IS NOT COPYRIGHTED</FONT>
00008 <FONT class=comment></FONT>
00009 <FONT class=comment> This source code is offered for use in the public domain. You may</FONT>
00010 <FONT class=comment> use, modify or distribute it freely.</FONT>
00011 <FONT class=comment></FONT>
00012 <FONT class=comment> This code is distributed in the hope that it will be useful, but</FONT>
00013 <FONT class=comment> WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY</FONT>
00014 <FONT class=comment> DISCLAIMED. This includes but is not limited to warranties of</FONT>
00015 <FONT class=comment> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</FONT>
00016 <FONT class=comment> */</FONT>
00017
00018 <FONT class=comment>/*</FONT>
00019 <FONT class=comment> ina90.h - this is an attempt to provide some compatibility with</FONT>
00020 <FONT class=comment> header files that come with IAR C, to make porting applications</FONT>
00021 <FONT class=comment> between different compilers easier. No 100% compatibility though.</FONT>
00022 <FONT class=comment> */</FONT>
00023
00024 <FONT class=preprocessor>#ifndef _INA90_H_</FONT>
<A name=l00025></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a0">00025</A> <FONT class=preprocessor></FONT><FONT class=preprocessor>#define _INA90_H_ 1</FONT>
00026 <FONT class=preprocessor></FONT>
<A name=l00027></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a1">00027</A> <FONT class=preprocessor>#define _CLI() __asm__ __volatile__ ("cli")</FONT>
<A name=l00028></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a2">00028</A> <FONT class=preprocessor></FONT><FONT class=preprocessor>#define _SEI() __asm__ __volatile__ ("sei")</FONT>
<A name=l00029></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a3">00029</A> <FONT class=preprocessor></FONT><FONT class=preprocessor>#define _NOP() __asm__ __volatile__ ("nop")</FONT>
<A name=l00030></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a4">00030</A> <FONT class=preprocessor></FONT><FONT class=preprocessor>#define _WDR() __asm__ __volatile__ ("wdr")</FONT>
<A name=l00031></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a5">00031</A> <FONT class=preprocessor></FONT><FONT class=preprocessor>#define _SLEEP() __asm__ __volatile__ ("sleep")</FONT>
<A name=l00032></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a6">00032</A> <FONT class=preprocessor></FONT><FONT class=preprocessor>#define _OPC(op) __asm__ __volatile__ (".word %0" : : "n" (op))</FONT>
00033 <FONT class=preprocessor></FONT>
<A name=l00034></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a7">00034</A> <FONT class=preprocessor>#define __LPM_enhanced__(addr) ({ \</FONT>
00035 <FONT class=preprocessor> unsigned short __addr16 = (unsigned short)(addr); \</FONT>
00036 <FONT class=preprocessor> unsigned char __result; \</FONT>
00037 <FONT class=preprocessor> __asm__ ( \</FONT>
00038 <FONT class=preprocessor> "lpm %0, Z" \</FONT>
00039 <FONT class=preprocessor> : "=r" (__result) \</FONT>
00040 <FONT class=preprocessor> : "z" (__addr16) \</FONT>
00041 <FONT class=preprocessor> ); \</FONT>
00042 <FONT class=preprocessor> __result; \</FONT>
00043 <FONT class=preprocessor> })</FONT>
00044 <FONT class=preprocessor></FONT>
<A name=l00045></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a8">00045</A> <FONT class=preprocessor>#define __LPM_classic__(addr) ({ \</FONT>
00046 <FONT class=preprocessor> unsigned short __addr16 = (unsigned short)(addr); \</FONT>
00047 <FONT class=preprocessor> unsigned char __result; \</FONT>
00048 <FONT class=preprocessor> __asm__ ( \</FONT>
00049 <FONT class=preprocessor> "lpm" "\n\t" \</FONT>
00050 <FONT class=preprocessor> "mov %0, r0" \</FONT>
00051 <FONT class=preprocessor> : "=r" (__result) \</FONT>
00052 <FONT class=preprocessor> : "z" (__addr16) \</FONT>
00053 <FONT class=preprocessor> : "r0" \</FONT>
00054 <FONT class=preprocessor> ); \</FONT>
00055 <FONT class=preprocessor> __result; \</FONT>
00056 <FONT class=preprocessor> })</FONT>
00057 <FONT class=preprocessor></FONT>
00058 <FONT class=comment>/* Only for devices with more than 64K of program memory.</FONT>
00059 <FONT class=comment> RAMPZ must be defined (see iom103.h). */</FONT>
00060
<A name=l00061></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a9">00061</A> <FONT class=preprocessor>#define __ELPM_enhanced__(addr) ({ \</FONT>
00062 <FONT class=preprocessor> unsigned long __addr32 = (unsigned long)(addr); \</FONT>
00063 <FONT class=preprocessor> unsigned char __result; \</FONT>
00064 <FONT class=preprocessor> __asm__ ( \</FONT>
00065 <FONT class=preprocessor> "out %2, %C1" "\n\t" \</FONT>
00066 <FONT class=preprocessor> "movw r30, %1" "\n\t" \</FONT>
00067 <FONT class=preprocessor> "elpm %0, Z" \</FONT>
00068 <FONT class=preprocessor> : "=r" (__result) \</FONT>
00069 <FONT class=preprocessor> : "v" (__addr32), "I" (RAMPZ) \</FONT>
00070 <FONT class=preprocessor> : "r30", "r31" \</FONT>
00071 <FONT class=preprocessor> ); \</FONT>
00072 <FONT class=preprocessor> __result; \</FONT>
00073 <FONT class=preprocessor> })</FONT>
00074 <FONT class=preprocessor></FONT>
<A name=l00075></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a10">00075</A> <FONT class=preprocessor>#define __ELPM_classic__(addr) ({ \</FONT>
00076 <FONT class=preprocessor> unsigned long __addr32 = (unsigned long)(addr); \</FONT>
00077 <FONT class=preprocessor> unsigned char __result; \</FONT>
00078 <FONT class=preprocessor> __asm__ ( \</FONT>
00079 <FONT class=preprocessor> "out %2, %C1" "\n\t" \</FONT>
00080 <FONT class=preprocessor> "mov r31, %B1" "\n\t" \</FONT>
00081 <FONT class=preprocessor> "mov r30, %A1" "\n\t" \</FONT>
00082 <FONT class=preprocessor> "elpm" "\n\t" \</FONT>
00083 <FONT class=preprocessor> "mov %0, r0" \</FONT>
00084 <FONT class=preprocessor> : "=r" (__result) \</FONT>
00085 <FONT class=preprocessor> : "r" (__addr32), "I" (RAMPZ) \</FONT>
00086 <FONT class=preprocessor> : "r0", "r30", "r31" \</FONT>
00087 <FONT class=preprocessor> ); \</FONT>
00088 <FONT class=preprocessor> __result; \</FONT>
00089 <FONT class=preprocessor> })</FONT>
00090 <FONT class=preprocessor></FONT>
00091 <FONT class=preprocessor>#if defined (__AVR_ENHANCED__)</FONT>
00092 <FONT class=preprocessor></FONT><FONT class=preprocessor>#define _LPM(addr) __LPM_enhanced__(addr)</FONT>
00093 <FONT class=preprocessor></FONT><FONT class=preprocessor>#define _ELPM(addr) __ELPM_enhanced__(addr)</FONT>
00094 <FONT class=preprocessor></FONT><FONT class=preprocessor>#else</FONT>
<A name=l00095></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a11">00095</A> <FONT class=preprocessor></FONT><FONT class=preprocessor>#define _LPM(addr) __LPM_classic__(addr)</FONT>
<A name=l00096></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a12">00096</A> <FONT class=preprocessor></FONT><FONT class=preprocessor>#define _ELPM(addr) __ELPM_classic__(addr)</FONT>
00097 <FONT class=preprocessor></FONT><FONT class=preprocessor>#endif</FONT>
00098 <FONT class=preprocessor></FONT>
00099 <FONT class=comment>/* _EEGET, _EEPUT */</FONT>
00100 <FONT class=preprocessor>#include <<A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/eeprom_8h.html">eeprom.h</A>></FONT>
00101
<A name=l00102></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a13">00102</A> <FONT class=preprocessor>#define input(port) inp(port)</FONT>
<A name=l00103></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a14">00103</A> <FONT class=preprocessor></FONT><FONT class=preprocessor>#define output(port, val) outp(val, port)</FONT>
00104 <FONT class=preprocessor></FONT>
<A name=l00105></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a15">00105</A> <FONT class=preprocessor>#define __inp_blk__(port, addr, cnt, op) { \</FONT>
00106 <FONT class=preprocessor> unsigned char __i = (cnt); \</FONT>
00107 <FONT class=preprocessor> unsigned char *__addr = (addr); \</FONT>
00108 <FONT class=preprocessor> while (__i) { \</FONT>
00109 <FONT class=preprocessor> *(__addr op) = input(port); \</FONT>
00110 <FONT class=preprocessor> __i--; \</FONT>
00111 <FONT class=preprocessor> } \</FONT>
00112 <FONT class=preprocessor> }</FONT>
00113 <FONT class=preprocessor></FONT>
<A name=l00114></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a16">00114</A> <FONT class=preprocessor>#define input_block_inc(port, addr, cnt) __inp_blk__(port, addr, cnt, ++)</FONT>
<A name=l00115></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a17">00115</A> <FONT class=preprocessor></FONT><FONT class=preprocessor>#define input_block_dec(port, addr, cnt) __inp_blk__(port, addr, cnt, --)</FONT>
00116 <FONT class=preprocessor></FONT>
<A name=l00117></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a18">00117</A> <FONT class=preprocessor>#define __out_blk__(port, addr, cnt, op) { \</FONT>
00118 <FONT class=preprocessor> unsigned char __i = (cnt); \</FONT>
00119 <FONT class=preprocessor> const unsigned char *__addr = (addr); \</FONT>
00120 <FONT class=preprocessor> while (__i) { \</FONT>
00121 <FONT class=preprocessor> output(port, *(__addr op)); \</FONT>
00122 <FONT class=preprocessor> __i--; \</FONT>
00123 <FONT class=preprocessor> } \</FONT>
00124 <FONT class=preprocessor> }</FONT>
00125 <FONT class=preprocessor></FONT>
<A name=l00126></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a19">00126</A> <FONT class=preprocessor>#define output_block_inc(port, addr, cnt, op) __out_blk__(port, addr, cnt, ++)</FONT>
<A name=l00127></A><A class=code href="http://ccrma-www.stanford.edu/courses/250a/docs/avrgcc/ina90_8h.html#a20">00127</A> <FONT class=preprocessor></FONT><FONT class=preprocessor>#define output_block_dec(port, addr, cnt, op) __out_blk__(port, addr, cnt, --)</FONT>
00128 <FONT class=preprocessor></FONT>
00129 <FONT class=preprocessor>#endif</FONT>
00130 <FONT class=preprocessor></FONT>
</PRE></DIV>
<HR>
<ADDRESS><SMALL>Generated at Fri Jul 19 14:55:40 2002 for avrgcc by <A
href="http://www.doxygen.org/index.html"><IMG height=53 alt=doxygen
src="ina90_h Source File1.files/doxygen.gif" width=110 align=middle
border=0></A>1.2.8.1 written by <A href="mailto:dimitri@stack.nl">Dimitri van
Heesch</A>,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -