📄 pic16cxxx-7-2.htm
字号:
<html>
<head>
<title>PIC16Cxxx单片机应用与设计</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
BODY {font-size:12px;font-family:宋体;}
td {font-size:12px;font-family:宋体;}
A:link { COLOR: #0000ff; TEXT-DECORATION: underline}
A:visited { COLOR:#0000ff; TEXT-DECORATION: underline}
A:active { COLOR:red! important; TEXT-DECORATION: underline}
A:hover { TEXT-DECORATION: none}
.b24 a:link { FONT-SIZE: 12px; COLOR:#0000ff; TEXT-DECORATION: underline}
.b24 a:visited {FONT-SIZE: 12px; COLOR:#0000ff; TEXT-DECORATION: underline}
.b24 a:active { FONT-SIZE: 12px; COLOR:#0000ff; TEXT-DECORATION: underline}
.b24 a:hover { FONT-SIZE: 12px; COLOR:#990000; TEXT-DECORATION: none}
.lh13 { LINE-HEIGHT: 130%}
.lh15 { LINE-HEIGHT: 150%}
.lh17 { LINE-HEIGHT: 170%}
.lh19 { LINE-HEIGHT: 190%}
.lh30 { LINE-HEIGHT: 300%}
-->
</style>
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" >
<table width="776" border="0" align="center" cellpadding="0" cellspacing="0">
<tr align="center">
<td width="776"> </td>
</tr>
<tr align="center">
<td> <table width="700" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="41%" height="46" valign="top"><img src="logo.gif" width="205" height="41"></td>
<td height="46" width="59%" valign="bottom" align="right"> <table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="right"><b><font style="font-size:16px" color="#990000">——
—— —— 技术资料下载中心</font></b> </td>
</tr>
<tr>
<td height="8"></td>
</tr>
</table></td>
</tr>
<tr>
<td height="1" colspan="2"></td>
</tr>
<tr bgcolor="#990000">
<td height="1" colspan="2"></td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2"><font style="font-size:16px" color="#000000"><b>>> <a href="index.htm">PIC16CXXX单片机应用与设计</a>
\</b></font></td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
</table>
<table width="700" border="0" cellspacing="0" cellpadding="2" class="lh15">
<tr>
<td align="center"><b><font size="3">第八章 PIC16CXX程序设计基础</font><font size="3"></font></b></td>
</tr>
<tr>
<td> <p> </p></td>
</tr>
<tr valign="top">
<td height="300"> <p>上面我们已详细介绍了PIC16CXX的每条指令。现在我们来总结一下它们的几个特点:<br>
1、各寄存器的每一个位都可单独地被置位、清零或测试,无须通过间接比较,可节省执行时间和程序地址空间。<br>
2、特殊功能寄存器的使用方法和通用寄存器的方法完全一样,即和通用寄存器一样看待。这样使程序执行和地址空间都简化很多。<br>
3、对于跨页面的CALL和GOTO操作,要事先设置页面地址位PCLATH<3>,对于CALL来说,子程序返回后还要将PCLATH<3>恢复到本页面地址。<br>
<br>
§8.1 程序的基本格式<br>
<br>
先介绍二条伪指令:<br>
1、EQU ─ 标号赋值伪指令 ORG ─ 地址定义伪指令<br>
PIC16CXX一旦RESET后指令计数器PC被置为0,所以PIC16CXX所有型号芯片的复位地址为0H。<br>
一般说来,PIC的源程序并没有要求统一的格式,大家可以根据自己的风格来编写。但这里我们推荐一种清晰明了的格式供参考。</p>
<p><img src="image/a371.gif" width="422" height="545" hspace="30"></p>
<p> 另一些指令书写注意事项请参阅宏汇编MPASM章节。<br>
16CXX.EQU是一个定义PIC各种寄存器变量的文件,用户可以在其中增加定义或删除定义。<br>
</p>
<table width="80%" border="0" cellpadding="0" cellspacing="0" align="center" class="lh15">
<tr>
<td>;********PIC16CXX特殊功能寄存器定义*****************<br>
;特殊功能寄存器<br>
INDF EQU 0<br>
F0 EQU 0 ;间址寄存器<br>
TMR0 EQU 1 ;TIMER0实时实钟<br>
OPTION EQU 81H<br>
OPTION_R EQU 81H ;TMR0预分频寄存器<br>
PCL EQU 2 ;程序计数器低8位<br>
STATUS EQU 3 ;状态寄存器<br>
FSR EQU 4 ;间址选择寄存器<br>
PORT_A EQU 5 ;-┐ <br>
PORT_B EQU 6 ; │可编程<br>
PORT_C EQU 7 ; │双向I/O口<br>
PORT_D EQU 8 ; │ <br>
PORT_E EQU 9 ;-┘ <br>
TRISA EQU 85H ;-┐ <br>
TRISB EQU 86H ; │I/O口方向<br>
TRISC EQU 87H ; │控制寄存器<br>
TRISD EQU 88H ; │ <br>
TRISE EQU 89H ;-┘ <br>
PCLATH EQU 0AH ;程序计数器高5位<br>
INTCON EQU 0BH ;中断控制寄存器<br>
PIR1 EQU 0CH ;外设中断标志寄存器1<br>
PIE1 EQU 8CH ;外设中断使能寄存器1<br>
PIR2 EQU 0DH ;外设中断标志寄存器2<br>
PIE2 EQU 8DH ;外设中断使能寄存器2<br>
TMR1L EQU 0EH ;TIMER1低位计数器<br>
TMR1H EQU 0FH ;TIMER1高位计数器<br>
PCON EQU 8EH ;上电寄存器<br>
T1CON EQU 10H ;TIMER1控制寄存器 <br>
TMR2 EQU 11H ;TIMER2<br>
T2CON EQU 12H ;TIMER2控制寄存器<br>
PR2 EQU 92H ;TIMER2周期寄存器<br>
SSPBUF EQU 13H ;SSP缓冲器<br>
SSPCON EQU 14H ;SSP控制寄存器<br>
SSPADD EQU 93H ;SSP地址寄存器<br>
SSPSTAT EQU 94H ;SSP标志寄存器<br>
CCPR1L EQU 15H ;CCP1低位寄存器<br>
CCPR1H EQU 16H ;CCP1高位寄存器<br>
CCP1CON EQU 17H ;CCP1控制寄存器<br>
RCSTA EQU 18H ;SCI接收标志控制寄存器<br>
TXSTA EQU 98H ;SCI发送标志控制寄存器<br>
TXREG EQU 19H ;SCI发送寄存器<br>
SPBRG EQU 99H ;波特率寄存器<br>
RCREG EQU 1AH ;SCI接收寄存器<br>
CCPR2L EQU 1BH ;CCP2低位寄存器<br>
CCPR2H EQU 1CH ;CCP2高位寄存器<br>
CCP2CON EQU 1DH ;CCP2控制寄存器<br>
ADRES EQU 1EH ;地址寄存器<br>
ADCON0 EQU 1FH ;A/D控制寄存器0<br>
ADCON1 EQU 9FH ;A/D控制寄存器1<br> <br>
;STATUS位定义<br>
CARRY EQU 0<br>
C EQU 0 ;进/借位<br>
DCARRY EQU 1<br>
DC EQU 1 ;半进/借位<br>
Z_BIT EQU 2<br>
Z EQU 2 ;零标志位<br>
P_DOWN EQU 3 ;低功耗位<br>
PD EQU 3<br>
T_OUT EQU 4 ;超时位<br>
TO EQU 4<br>
RP0 EQU 5 ;-┐<br>
RP1 EQU 6 ; │直接寻址时寄存器体选择<br>
RP2 EQU 7 ;-┘<br> <br>
;FSR位定义<br>
PS0 EQU 5 ;-┐间接寻址时<br>
PS1 EQU 6 ;-┘寄存器体选择<br> <br>
;OPTION位定义<br>
TS0 EQU 0 ;-┐<br>
TS1 EQU 1 ; │预分频比设置<br>
TS2 EQU 2 ;-┘<br>
PSA EQU 3 ; 对TMR0或WDT分频选择<br>
T0SE EQU 4 ; T0CKI上升/下降沿选择<br>
T0CS EQU 5 ; 内部/外部时钟选择<br>
INTEDG EQU 6 ; INT上升/下降沿中断选择<br>
RBPU EQU 7 ; RB口弱上拉设置<br> <br>
;T1CON位定义<br>
TMR1ON EQU 0 ;开/关定时器1<br>
TMR1CS EQU 1 ;时钟选择<br>
T1SYNC EQU 2 ;同步/异步时钟选择<br>
T1OSCEN EQU 3 ;开/关T1外部振荡<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -