智能车制作

标题: 实用,经典的单片机编程要点[5] [打印本页]

作者: whut_wj    时间: 2008-9-30 01:49
标题: 实用,经典的单片机编程要点[5]
<><FONT face=黑体 size=3>break 和continue的区别: </FONT></P><P><BR><FONT face=黑体 size=3>//求数组中正数的和。 <BR>for (i=0;i&lt;10;i++) <BR>{ <BR>if(a&lt;0)&nbsp; <BR>&nbsp;continue;//continue 只是结束本次循环,不影响整个循环,条件满足时候,本次循环结束, <BR>&nbsp;//遇到continue语句时候,不执行他后面的语句,将负数舍弃。然后转向if循环语句。 <BR>&nbsp; aa+=a; <BR>} </FONT></P><P><BR><FONT face=黑体 size=3>//求调和级数中第多少项的值大于4 <BR>//&nbsp;&nbsp; 1+1/2+1/3+1/4+1/5+......+1/n; </FONT></P><P><FONT face=黑体 size=3>sum+=1.0/n; <BR>if(sum&gt;LIMIT)&nbsp; break;&nbsp; n++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //break和if语句一起用,当条件满足时候,for循环终止, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 他终止整个循环。。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //用在switch语句中只是结束swith语句。不影响循环;n=31; <BR>} </FONT></P><P><FONT face=黑体 size=3>**********************************************************************************</FONT></P><P><FONT face=黑体 size=3>**********************************************************************************</FONT></P><P><FONT face=黑体 size=3>**********************************************************************************<BR>位操作: <BR>1&nbsp;&nbsp; DDRB3=1&nbsp;&nbsp;&nbsp;&nbsp; DDRB|=(1&lt;&lt;3)&nbsp;&nbsp;&nbsp; DDRB|=BIT(3)&nbsp;&nbsp; DDRB|=BIT(DDB3)&nbsp; 是等同的 <BR>2&nbsp; PORTA&amp;=0x7f;&nbsp;&nbsp;&nbsp;&nbsp; PORTA&amp;=0b0111 1111&nbsp;&nbsp;&nbsp; </FONT></P><P><FONT face=黑体 size=3>if ((PIND&amp;0x80)==0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((PIND&amp;(1&lt;&lt;7))==0) <BR>if ((PIND&amp;0x80)==0x80)&nbsp;&nbsp;&nbsp; if((PIND&amp;(1&lt;&lt;7))==(1&lt;&lt;7)) </FONT></P><P><BR><FONT face=黑体 size=3>3&nbsp; const int table[7]={1,2,3);//说明table 是按照表格样分配在程序存储器的数组的 <BR>const char *ptr1; //数据在数据存储器,而指向数据的指针在程序存储器。(地址ptr1在rom) <BR>char * const ptr2;//数据在程序存储器,而指向数据的指针在数据存储器。 <BR>const char * const ptr3;//都在程序存储器。 <BR>const char hello[]="hello world";//为了节约空间,用常量字符形数组将字符串放在rom中。 <BR>unsigned char c =*(volatile unsigned char *)0x5f;//在数据内存中一个直接地址可以通过加指针类型符号直接访问。sreg的地址是5f,这样可以访问sreg。 <BR>*(volatile unsigned char *)0x5f|=0x80;&nbsp; //同上&nbsp; 访问0x20--0x5f地址 </FONT></P><P><FONT face=黑体 size=3>4&nbsp; EECR|=(1&lt;&lt;EEMWE); <BR>while (EECR&amp;(1&lt;&lt;EEWR)) <BR>WDTCR=(1&lt;&lt;WDCE)|(1&lt;&lt;WDE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 置位WDCE,WDE <BR>PORTB=(1&lt;&lt;PB7)|(1&lt;&lt;PB5)|(1&lt;&lt;PB4)|(1&lt;&lt;PB2); <BR>DDRB=(1&lt;&lt;DDB7)|(1&lt;&lt;DDB5)|(1&lt;&lt;DDB4)|(1&lt;&lt;DDB2); </FONT></P><P><FONT face=黑体 size=3>PORTA|=BIT(PA7);&nbsp;&nbsp; PORTA|=0X80; </FONT></P><P><FONT face=黑体 size=3>&nbsp;PORTA^=0X80;//翻转位7 </FONT></P><P><FONT face=黑体 size=3>5&nbsp; 置位数据寄存器的第7位, <BR>char a; <BR>a|=(1&lt;&lt;7); <BR>或者&nbsp; a|=BIT(7); </FONT></P><P><FONT face=黑体 size=3>6&nbsp; 在macros.h中。定义了常用的位操作宏定义。 <BR>#define WDR()&nbsp;&nbsp; asm("wdr") <BR>#define SEI()&nbsp;&nbsp; asm("sei") <BR>#define CLI()&nbsp;&nbsp; asm("cli") <BR>#define NOP()&nbsp;&nbsp; asm("nop") <BR>#define _WDR()&nbsp;&nbsp; asm("wdr") <BR>#define _SEI()&nbsp;&nbsp; asm("sei") <BR>#define _CLI()&nbsp;&nbsp; asm("cli") <BR>#define _NOP()&nbsp;&nbsp; asm("nop") <BR>6 <BR>#define pi 3.1415926 <BR>#define LEAP_YEAR year%4==0&#92; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp; year%100!=0| year%400==0&nbsp; //一行写不下用&#92; <BR>#define S(a,b)&nbsp; a*b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // area=s(3,2) <BR>#define S(r)&nbsp; pi*(r)*(r)&nbsp;&nbsp;&nbsp; //area=S(a+b);&nbsp; =pi*(a+b)(a+b) <BR>7 </FONT></P><P><FONT face=黑体 size=3>条件编译。 <BR>#ifdef&nbsp; KEY <BR>&nbsp;&nbsp; .....; <BR>#else&nbsp;&nbsp; <BR>&nbsp;&nbsp; ....; <BR>#endif </FONT></P><P><BR><FONT face=黑体 size=3>用0b&lt;1|0&gt;指定二进制。 <BR>&nbsp;#define U8&nbsp;&nbsp;&nbsp;&nbsp; unsigned char <BR>&nbsp;#define U16&nbsp;&nbsp;&nbsp; unsigned int <BR>&nbsp;#define U32&nbsp;&nbsp;&nbsp; unsigned long <BR>&nbsp;#define I8&nbsp;&nbsp;&nbsp;&nbsp; signed char <BR>&nbsp;#define I16&nbsp;&nbsp;&nbsp; signed int <BR>&nbsp;#define I32&nbsp;&nbsp;&nbsp; signed long <BR>&nbsp;#define F32&nbsp;&nbsp;&nbsp; float </FONT></P><P><FONT size=3>&nbsp;</FONT></P>
作者: demon    时间: 2008-9-30 02:01
标题: Re:实用,经典的单片机编程要点[5]
<IMG src="http://www.znczz.com/images/Emotions/2.gif">沙发
作者: 50833713    时间: 2008-9-30 03:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: xixihaha    时间: 2008-9-30 04:42
标题: Re:实用,经典的单片机编程要点[5]
<>地板</P>
作者: whut_wj    时间: 2008-9-30 07:03
标题: Re:实用,经典的单片机编程要点[5]
<>恩,要顶上去!呵呵</P>
作者: 50833713    时间: 2008-9-30 17:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: redfox306    时间: 2009-1-6 05:25
标题: Re:实用,经典的单片机编程要点[5]
<>heh </P><P>狂顶</P>
作者: control    时间: 2009-3-15 18:12
顶~~
作者: chenrunshe_007    时间: 2009-4-10 14:03
我躲在厕所后面狂顶
作者: dengxiaofeng    时间: 2009-4-11 23:44
不错!




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2