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

📄 delay.html

📁 PKE(被动无钥门禁系统
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by AsmDoc -->
<TITLE>
HTMLWriter
</TITLE>

<META NAME="keywords" CONTENT="HTMLWriter class">

<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="DELAY";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">


<!-- ======== START OF CLASS DATA ======== -->
<H2>
Module DELAY</H2>
<HR>

<P>
	This class provides some usefull delay routines.
<P>

<P>
<HR>

<P>
<!-- ========== MACRO SUMMARY =========== -->

<A NAME="macro_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Macro Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE></CODE></FONT></TD>
<TD><CODE><B><A HREF="DELAY.html#Delay.WaitFor">Delay.WaitFor</A></B>(&nbsp;time&nbsp;&nbsp;unit&nbsp;)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	This macro waits for up to 12 ms.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE></CODE></FONT></TD>
<TD><CODE><B><A HREF="DELAY.html#Delay.Isr">Delay.Isr</A></B>(&nbsp;w&nbsp;)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	This macro must be called within the Interrupt routine, to enable the counter.</TD>
</TR>
</TABLE>
<P>

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Function Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE></CODE></FONT></TD>
<TD><CODE><B><A HREF="DELAY.html#Delay.wait_w_x_50us">Delay.wait_w_x_50us</A></B>(&nbsp;w&nbsp;)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	This function waits for the value in w multiplied with 50 us.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE></CODE></FONT></TD>
<TD><CODE><B><A HREF="DELAY.html#Delay.start">Delay.start</A></B>(&nbsp;w&nbsp;)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	This function starts a counter an initializes it with value in w multiplied with 50 us.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE></CODE></FONT></TD>
<TD><CODE><B><A HREF="DELAY.html#Delay.Wait">Delay.Wait</A></B>(&nbsp;w&nbsp;)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	This function waits for the Counter to finish.</TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ MACRO DETAIL ========== -->

<A NAME="macro_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Macro Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="Delay.WaitFor"></A><H3>
Delay.WaitFor</H3>
<PRE>
&nbsp;<B>Delay.WaitFor</B>(&nbsp;time&nbsp;&nbsp;unit&nbsp;)</PRE>
<P>
<DL>
<DD>	This macro waits for up to 12 ms.	The time has to be a multible of 50us.	It is just added to enhance readability of the source code.	It calls Delay.wait_w_x_50us with appropriate parameters.	This function is intended to run at 8 MHz.	If running other speeds, change the Delay.wait_w_x_50us method.
<P>
<DD><DL>
<DT><B>Parameters:</B>
<DD><CODE>time</CODE> - The value of time </DD>
<DD><CODE>unit</CODE> - The character corresponding to the unit of time (i.e. 'u', 'm') </DD>
</DL></DD>
<P>
<DD><DL>
<DT><B>Used SFRs:</B><DD> Delay.Returned</DD></DL>
</DD>
<DD><DL>
<DT><B>Stacklevel:</B><DD>0</DD></DL>
</DD>
<DD><DL>
<DT><B>Status:</B><DD> Tested</DD></DL>
</DD>
<P>
<DD><DL>
<DT><B>Example:</B><DD><CODE><TABLE BORDER="0"><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF">banksel&nbsp;</FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">PORTB&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>bsf&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">PORTB,0&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE><FONT COLOR="#AA22AA">Delay.waitFor&nbsp;</FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">.500,&nbsp;</FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">'u'&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF">banksel&nbsp;</FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">PORTB&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>bcf&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">PORTB,0&nbsp;</FONT></CODE></TD></TR></TABLE></CODE></DD></DL>
</DD>
<DD><DL>
<DT><B>Description:</B><DD> This sets Pin RB0 high for approx. 500 us</DD></DL>
</DD>
</DL>
<HR>
<A NAME="Delay.Isr"></A><H3>
Delay.Isr</H3>
<PRE>
&nbsp;<B>Delay.Isr</B>(&nbsp;w&nbsp;)</PRE>
<P>
<DL>
<DD>	This macro must be called within the Interrupt routine, to enable the counter.	The Counter function is optimized for the following Interrupt routine.	If you do changes to that routine you will have to modify counter.start function,	to compensate these instructions (or you will loose precision).
<P>
<DD><DL>
<DT><B>Parameters:</B>
<DD><CODE>w</CODE> - The multiplicator </DD>
</DL></DD>
<P>
<DD><DL>
<DT><B>Used SFRs:</B><DD> TMR0</DD></DL>
</DD>
<DD><DL>
<DT><B>Stacklevel:</B><DD>0</DD></DL>
</DD>
<DD><DL>
<DT><B>Status:</B><DD> Tested</DD></DL>
</DD>
<P>
<DD><DL>
<DT><B>Example:</B><DD><CODE><TABLE BORDER="0"><TR>	<TD><CODE><FONT COLOR="#AA22AA">INT&nbsp;</FONT></CODE></TD>	<TD><CODE><FONT COLOR="#0000FF">code&nbsp;</FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">0x04&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>movwf&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">W_TEMP&nbsp;</FONT></CODE></TD>	<TD><CODE><FONT COLOR="#22AAAA">; Save off current W register contents&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>movf&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">STATUS,w&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>clrf&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">STATUS&nbsp;</FONT></CODE></TD>	<TD><CODE><FONT COLOR="#22AAAA">; Force to page0&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>movwf&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">STATUS_TEMP&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>movf&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">PCLATH,w&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>movwf&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">PCLATH_TEMP&nbsp;</FONT></CODE></TD>	<TD><CODE><FONT COLOR="#22AAAA">; Save PCLATH&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>movf&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">FSR,w&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>movwf&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">FSR_TEMP&nbsp;</FONT></CODE></TD>	<TD><CODE><FONT COLOR="#22AAAA">; Save FSR&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>GOTO&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">INT_SERV&nbsp;</FONT></CODE></TD></TR><TR></TR><TR></TR><TR>	<TD><CODE><FONT COLOR="#AA22AA">INT_SERV&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE><FONT COLOR="#AA22AA">TIMER0_INT&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>btfss&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">INTCON,T0IE&nbsp;</FONT></CODE></TD>	<TD><CODE><FONT COLOR="#22AAAA">; Check if PORTA Interrupt Enabled&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>goto&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">NEXT_INT&nbsp;</FONT></CODE></TD>	<TD><CODE><FONT COLOR="#22AAAA">; ... No, then continue search&nbsp;</FONT></CODE></TD></TR><TR></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>btfss&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">INTCON,T0IF&nbsp;</FONT></CODE></TD>	<TD><CODE><FONT COLOR="#22AAAA">; Check if TMR0 Interrupt Flag Set&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#0000FF"><B>goto&nbsp;</B></FONT></CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">NEXT_INT&nbsp;</FONT></CODE></TD></TR><TR></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#AA22AA">Delay.Isr&nbsp;</FONT></CODE></TD>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#22AAAA">; Handles the delay routines&nbsp;</FONT></CODE></TD></TR><TR></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE><FONT COLOR="#22AAAA">; *** If you want to use Timer0 for other Interrupts modify the Delay.start function,&nbsp;</FONT></CODE></TD></TR><TR>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE>&nbsp;</CODE></TD>	<TD><CODE>&nbsp;</CODE></TD>

⌨️ 快捷键说明

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