📄 上海齐济电子-应用技巧-pic单片机开发的若干问题.htm
字号:
src="上海齐济电子-应用技巧-PIC单片机开发的若干问题.files/yyjq8001.jpg" width=126></P>
<P align=center><SPAN style="FONT-SIZE: 9pt">图1
提高工作频率的方法</SPAN></P></TD></TR></TBODY></TABLE>
<TABLE border=0 width="100%">
<TBODY>
<TR>
<TD width="45%"><SPAN style="FONT-SIZE: 9pt"><FONT
color=#008080><STRONG>例1</STRONG></FONT>(用Mplab-C编写)</SPAN></TD>
<TD width="3%"></TD>
<TD width="52%"><SPAN style="FONT-SIZE: 9pt"><STRONG><FONT
color=#008080>例2</FONT></STRONG>(用Masm编写)</SPAN></TD></TR>
<TR>
<TD width="45%"><SPAN style="FONT-SIZE: 9pt">Delay()</SPAN></TD>
<TD width="3%"></TD>
<TD width="52%"><SPAN style="FONT-SIZE: 9pt">
Delay</SPAN></TD></TR>
<TR>
<TD width="45%"><SPAN style="FONT-SIZE: 9pt">
{</SPAN></TD>
<TD width="3%"></TD>
<TD width="52%"><SPAN style="FONT-SIZE: 9pt">
;此行可加开关中断指令</SPAN></TD></TR>
<TR>
<TD width="45%"><SPAN
style="FONT-SIZE: 9pt">
/*此行可加开关中断指令*/</SPAN></TD>
<TD width="3%"></TD>
<TD width="52%"><SPAN style="FONT-SIZE: 9pt">
movlw.10</SPAN></TD></TR>
<TR>
<TD width="45%"><SPAN style="FONT-SIZE: 9pt"> for
(i=0; i<=10; i++)</SPAN></TD>
<TD width="3%"></TD>
<TD width="52%"><SPAN style="FONT-SIZE: 9pt">
movwf Counter</SPAN></TD></TR>
<TR>
<TD width="45%"><SPAN style="FONT-SIZE: 9pt">
SLEEP();</SPAN></TD>
<TD width="3%"></TD>
<TD width="52%"><SPAN style="FONT-SIZE: 9pt">
Loop1</SPAN></TD></TR>
<TR>
<TD width="45%"><SPAN style="FONT-SIZE: 9pt">
}</SPAN></TD>
<TD width="3%"></TD>
<TD width="52%"><SPAN style="FONT-SIZE: 9pt">
Sleep</SPAN></TD></TR>
<TR>
<TD width="45%"></TD>
<TD width="3%"></TD>
<TD width="52%"><SPAN style="FONT-SIZE: 9pt">
decfsz Counter</SPAN></TD></TR>
<TR>
<TD width="45%"></TD>
<TD width="3%"></TD>
<TD width="52%"><SPAN style="FONT-SIZE: 9pt"> goto
Loop1</SPAN></TD></TR>
<TR>
<TD width="45%"><SPAN style="FONT-SIZE: 9pt"> </SPAN></TD>
<TD width="3%"></TD>
<TD width="52%"><SPAN style="FONT-SIZE: 9pt">
return</SPAN></TD></TR></TBODY></TABLE><B>
<P align=justify><FONT color=#008080><SPAN style="FONT-SIZE: 9pt">2
注意INTCON中的RBIF位</SPAN></FONT></P></B>
<P align=justify><SPAN style="FONT-SIZE: 9pt">
INTCON中的各中断允许位对中断状态位并无影响。当PORT
B配置成输入方式时,RB<7:4>引脚输入在每个读操作周期被抽样并与旧的锁存值比较,一旦不同就产生一个高电平,置RBIF=1。在开RB中断前,也许RBIF已置“1”,所以在开RB中断时应先清RBIF位,以免受RBIF原值的影响,同时在中断处理完成后最好是清RBIF位。</SPAN></P><B>
<P align=justify><FONT color=#008080><SPAN style="FONT-SIZE: 9pt">3
用Mplab-C高级语言写PIC单片机程序时要注意的问题</SPAN></FONT></P></B>
<P align=justify><SPAN style="FONT-SIZE: 9pt"><FONT color=#008080><B>3.1
程序中嵌入汇编指令时注意书写格式 </B></FONT>见例3。</SPAN></P>
<BLOCKQUOTE>
<P align=justify><FONT color=#008080><STRONG><SPAN
style="FONT-SIZE: 9pt">例3</SPAN></STRONG></FONT></P></BLOCKQUOTE>
<TABLE border=0 width="103%">
<TBODY>
<TR>
<TD width="27%"><SPAN style="FONT-SIZE: 9pt">……</SPAN></TD>
<TD width="6%"></TD>
<TD width="70%"><SPAN style="FONT-SIZE: 9pt">……</SPAN></TD></TR>
<TR>
<TD width="27%"><SPAN style="FONT-SIZE: 9pt">while(1)
{#asm</SPAN></TD>
<TD width="6%"></TD>
<TD width="70%"><SPAN style="FONT-SIZE: 9pt">while(1) {</SPAN></TD></TR>
<TR>
<TD width="27%"><SPAN style="FONT-SIZE: 9pt">
……</SPAN></TD>
<TD width="6%"><SPAN style="FONT-SIZE: 9pt">
</SPAN></TD>
<TD width="70%"><SPAN style="FONT-SIZE: 9pt"> #asm
/*应另起一行*/</SPAN></TD></TR>
<TR>
<TD width="27%"><SPAN style="FONT-SIZE: 9pt">
#endasm</SPAN></TD>
<TD width="6%"><SPAN style="FONT-SIZE: 9pt">
</SPAN></TD>
<TD width="70%"><SPAN style="FONT-SIZE: 9pt">
……</SPAN></TD></TR>
<TR>
<TD width="27%"><SPAN style="FONT-SIZE: 9pt">
}/*不能正确编译*/</SPAN></TD>
<TD width="6%"><SPAN style="FONT-SIZE: 9pt">
</SPAN></TD>
<TD width="70%"><SPAN style="FONT-SIZE: 9pt">
#endasm</SPAN></TD></TR>
<TR>
<TD width="27%"><SPAN style="FONT-SIZE: 9pt">……</SPAN></TD>
<TD width="6%"></TD>
<TD width="70%"><SPAN style="FONT-SIZE: 9pt">
}/*编译通过*/</SPAN></TD></TR>
<TR>
<TD width="27%"></TD>
<TD width="6%"></TD>
<TD width="70%"><SPAN
style="FONT-SIZE: 9pt">……</SPAN></TD></TR></TBODY></TABLE>
<P align=justify><SPAN style="FONT-SIZE: 9pt">
当内嵌汇编指令时,从“#asm”到“endasm”每条指令都必须各占一行,否则编译时会出错。</SPAN></P>
<P align=justify><B><SPAN style="FONT-SIZE: 9pt"><FONT color=#008080>3.2
加法、乘法的最安全的表示方法 </FONT></SPAN></B><SPAN
style="FONT-SIZE: 9pt">见例4。</SPAN></P>
<BLOCKQUOTE>
<P align=justify><STRONG><FONT color=#008080><SPAN
style="FONT-SIZE: 9pt">例4</SPAN></FONT></STRONG></P></BLOCKQUOTE>
<TABLE border=0 width="100%">
<TBODY>
<TR>
<TD width="8%"></TD>
<TD width="92%"><SPAN
style="FONT-SIZE: 9pt">#include<16c71.h></SPAN></TD></TR>
<TR>
<TD width="8%"></TD>
<TD width="92%"><SPAN
style="FONT-SIZE: 9pt">#include<math.h></SPAN></TD></TR>
<TR>
<TD width="8%"></TD>
<TD width="92%"><SPAN style="FONT-SIZE: 9pt">unsigned int a,
b;</SPAN></TD></TR>
<TR>
<TD width="8%"></TD>
<TD width="92%"><SPAN style="FONT-SIZE: 9pt">unsigned long
c;</SPAN></TD></TR>
<TR>
<TD width="8%"></TD>
<TD width="92%"><SPAN style="FONT-SIZE: 9pt">void
main()</SPAN></TD></TR>
<TR>
<TD width="8%"></TD>
<TD width="92%"><SPAN style="FONT-SIZE: 9pt">{ a=200;</SPAN></TD></TR>
<TR>
<TD width="8%"></TD>
<TD width="92%"><SPAN style="FONT-SIZE: 9pt">
b=2;</SPAN></TD></TR>
<TR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -