三、 看门狗定时器的仿真<?XML:NAMESPACE PREFIX = O />
电子园51单片机学习网 \0w/HY] k"\7l/`9e电子园51单片机学习网E4o!KD'v V&t
/***************************************************************************
电子园51单片机学习网_!hKyTb程序名称:仿真实例
电子园51单片机学习网f4KE9JL%FKa-oJ程序注释:看门狗定时器仿真
0F'Qnab1eRa0编译时间:2009年4月20日
ni$q4m^0yu"|0编译者:yangloong
电子园51单片机学习网z^d4Zx]4[7j F;Vm!M^版本:
AqN+{1L:hZ%BX0****************************************************************************/
电子园51单片机学习网hF9E"F-R&i)Op#i nclude<reg51.h>
vl&l_?jw7\T#^F0#i nclude< intrins.h>
电子园51单片机学习网QW N4z$E5n Vsfr WDTRST =0x0a6; //声明看门狗定时器
电子园51单片机学习网 K2D0y@j7c.svoid main ()
电子园51单片机学习网OCEv#Y0Xj{
$E/jq;|U5?0int i;
电子园51单片机学习网K3vGBo(b(M'H!BWDTRST=0x1e; //初始化看门狗
D6hC0qq5n0WDTRST=0xE1;
电子园51单片机学习网u\,^WYB)mwhile(1) //主循环
电子园51单片机学习网[yd&r x'?J{
电子园51单片机学习网 N}:Vm Sif ( P1==0x01)
电子园51单片机学习网v ~b(v\.sM{ for( i=0; i<100; i++ ) //短延时
(t@-X#A F(D0{ _nop_(); }
电子园51单片机学习网f&c b%j'_]1z}
电子园51单片机学习网3V4?:R c7Gelse if ( P1==0x02)
电子园51单片机学习网A,boX&GJAR:X{for ( i=0; i<10000; i++ ) //长延时,模拟系统故障
电子园51单片机学习网^/m8a"g1n^{ _nop_(); }
电子园51单片机学习网:g9p2[.f P}
H/S-H'bH o{m0else
\aO,D1~*P+w"@h:B0{ _nop_(); }
电子园51单片机学习网D7At ~L7sd| `&fNnWDTRST=0x1e; //喂看门狗定时器
(P |zf\4o0WDTRST=0xe1;
电子园51单片机学习网!rGzg5J}
电子园51单片机学习网hP+L lcR R:J)sJ w}
电子园51单片机学习网n km7Z6~ {;s@+G/I`d电子园51单片机学习网zc!Z&\m
电子园51单片机学习网|$kb*[8A[i5Z
三、 A/D转换器的仿真
%qL~-`:v P7n0选择Analog Devices的公司的ADuC812单片机创建一个新工程文件。
/Ny7O.h$n-jev0下面是仿真源程序
电子园51单片机学习网6d5@ ^x8w??/****************************************************************************
电子园51单片机学习网xv0mM ~/d程序名称:仿真实例
6j:|:m$@mIX0程序注释:A/D转换电路实验 Analog Devices单片机
电子园51单片机学习网"e4X#G,@9a*u@编译时间:2009年4月20日
*@w'W$j'K8V4o'W`?0编译者:yangloong
8p~}0i^ ^'x0版本:
电子园51单片机学习网uE,W0I{7Y#yW****************************************************************************/
电子园51单片机学习网[%scA1`#U#i nclude<ADUC812.H>
:e~a"f Q"Z%fIP8sZ G0#i nclude <stdio.h>
V_.Q6| T0void main ()
电子园51单片机学习网pb3\y6W3v}1ps{
j H8J{a$c5I0unsigned char chc; //声明变量,模拟通道数
电子园51单片机学习网VIBq4N^x9Gy6y_SCON=0x50;
电子园51单片机学习网 s~4w1A~yYwo4n#~TMOD|=0x20;
%|{0We c3s+M,O8Kz0TL1=0xf4;//波特率4800kb/s
+G3K2q S M,r0TH1=0xf4;
电子园51单片机学习网v.~,SItTR1=1;
电子园51单片机学习网E#u0C q b'ZdTI=1;
电子园51单片机学习网*x](\x2C h;?M3T/qAOa3F#|"kq0
ADCCON1=0x7c; //设置控制寄存器
3R&swg8@Au[0电子园51单片机学习网s-l1}Aj'x$] l
while(1)
电子园51单片机学习网8S+?9UE!G6C@{
2xxs+U(@%J Y0unsigned int con_data; //声明变量,A/D转换的结果
电子园51单片机学习网o*` h(v%XOKv[unsigned char channel ;//声明变量 ,模拟通道数
?hUb O6g s6z Q0chc++;
O,m5~!q6uV/N0chc%=8; //通道数0~7
!d`,I4zGXm%_-FB0ADCCON2=( ADCCON2&0xf0)|chc;
l7HEU;^zqF$\0SCONV=1;
1t A7s6P-Ld0while (ADCCON3&0x80) //单次转换
]]s s7F+aW5_0{
-jMt/EN)aA3LC?x0channel=ADCDATAH>>4; //读A/D值并打印输出结果
电子园51单片机学习网/m,uF0O%Xw`G(@con_data=ADCDATAL+(( ADCDATAH&0xf)<<8); //A/D转换的值
$V H|1mH)I Gw0printf("ADC channel %bu=0x%4.4x\n",channel,con_data);
.\0GX-M+j8L J.w5Z0}
电子园51单片机学习网GW_Eu^X_}
a%~:z1\Ug0电子园51单片机学习网@{@?{7p*zx
}
.U1N!R2lx#?N}0进入模拟仿真系统,在Peripherals中选择“A/D Converter”、在View中选择“Serial Window 1”。
电子园51单片机学习网A.A8Wqb+wfZ(s` ]由于设置VREF=2.500V,AIN3的设置和VREF相等,因此,channel 3=0x0fff; AIN2的设置为VREF/2;因此 channel 2=0x0800; AIN1=VREF/4, channel 1=0x0400;
电子园51单片机学习网!A}4v*mM3N电子园51单片机学习网)zR-B*Y"R/ze`:s6v^
三、 D/A转换器的仿真
Zd4^6yh1_5Q(g0电子园51单片机学习网$jOr*J8KM
此例与上例创建同样的芯片工程文件。
电子园51单片机学习网L/d5c7~v,H pb下面是源程序:
R&p)B NCw#S6G"Y*S0/***************************************************************************
电子园51单片机学习网Z2Q/kW`H r程序名称:仿真实例
电子园51单片机学习网t@k1O_程序注释:D/A转换电路实验 Analog Devices ADuC812单片机
9DWy*^)u*|#z`ls.s0编译时间:2009年4月20日
电子园51单片机学习网9f0Bb M;y编译者:yangloong
电子园51单片机学习网a+F J,{ yv6B E版本:
电子园51单片机学习网.E4Q2H7a B*****************************************************************************/
P s2ICgf4N;o"k;V0#i nclude<ADUC812.H>
电子园51单片机学习网,r W_xs(hO#i nclude <stdio.h>
电子园51单片机学习网JM-{!{ ^nwy7FN3n z\!Q1TU?]0
float DAC0V,DAC1V; //声明变量
电子园51单片机学习网zT S1Z m2\.g4A5V)P#n7s]0
void main ()
电子园51单片机学习网9XX.Qpp"pDc8O3J%X4H{
'pD$@h[9B~'d0// float DAC0V,DAC1V; //声明变量 在此声明变量,在Analog Logic窗口中没有此变量
电子园51单片机学习网}5s^u T5V2l,k3p{)c7od(N n0
SCON=0X50;
/c7J;UhA?@0TMOD|=0X20;
S0P X Sw'sKPmYh2R4N0TL1=0XF4;
W*|@%\u#^5\0TH1=0XF4;
电子园51单片机学习网m$j}{"H$\,_TR1=1;
电子园51单片机学习网kg/|;R!l/k.\8^TI=1;
i Wk,s1}+Zib-]'B0d[/N8\ lO$p&?7|6u0
DACCON=0X7B;
电子园51单片机学习网X D h6[4Z;Mv.Phwhile(1)
电子园51单片机学习网#Iku6eC*O+Te)Y-@L{
Y#L,^(vk&\A0unsigned int i;
电子园51单片机学习网vr1K*nMha3iz"O5A6yWfor ( i=0; i<4096; i++) //循环2^12=4096
8F|p:n m{0{
电子园51单片机学习网x.P2br`AP#}DACCON &=~0X04; //清零SYNC位
-jM+h)v ^cy]0DAC0H=i>>8; //dac0
电子园51单片机学习网+a'Gb'b9`fv-nDAC0L=i&0xff;
7kU-vHrM8N p|0DAC0V=(float)i*5.0/4095.0; //DAC0电压值
.R9S-EviB0电子园51单片机学习网!F\:ZC4C`/a5m
DAC1H=(4095-i)>>8;
电子园51单片机学习网[w,|kGvDAC1L=(4095-i)&0xff;
电子园51单片机学习网*Q/ZBYx)slDAC1V=(float)(4095-i) *5.0/4095.0; //DAC1电压值
N0A:u{^A])p0电子园51单片机学习网*hIz+s(Giq
DACCON|=0X04;
z?x V~ Gv0printf("Output %4.4x to DAC0(%1.4fv)\n",(unsigned )i , DAC0V);
电子园51单片机学习网RPu2P4[DG@-{printf("Output %4.4x to DAC1(%1.4fv)\n",(unsigned )(4095-i), DAC1V);
M"}|O E0ve#t%rO0
}
电子园51单片机学习网4WK6s9{*^Md}
电子园51单片机学习网t!b _at iB&E电子园51单片机学习网C p[xJ3x
}
lL!Qx#vM v*T1dL0
H/YH2Tp VS_ is}O0
x!D,w1BU0
三、 低功耗仿真
电子园51单片机学习网3p\H7\f |/o#\51系列单片机提供了两种低功耗模式,省电保持模式和休眠运行模式。在程序设计中,可以通过特殊功能寄存器PCON来设置,说明如下:
电子园51单片机学习网]6Z+Q;r"NX.]6hN当CPU设置PCON.1位为1后,PD=1;系统进入省电模式
#}0]X ZQ0当CPU设置PCON.0位为1后,即IDL=1;系统进入休眠运行模式。
电子园51单片机学习网 ?i8\ N2gy~当同时写入1时,PD优先,系统进入省电模式。
电子园51单片机学习网Q:L*{Z"E+i!q(t#l下面是仿真的源程序:
电子园51单片机学习网r4G`1S's/****************************************************************************
电子园51单片机学习网"n ?{T"JM)v#I$w5B程序名称:仿真实例
2I6l/f]^"l,P0程序注释:低功耗仿真
电子园51单片机学习网5~pv;HmN编译时间:2009年4月20日
电子园51单片机学习网2L)m2X_/{[ Y*q4bt编译者:yangloong
电子园51单片机学习网,Pk:@ CVtY版本:
电子园51单片机学习网3a Lm:N~ Hp r***************************************************************************/
电子园51单片机学习网bv2^\'B4c+}+Y#i nclude<reg51.h>
电子园51单片机学习网Ck n v9ZEFW3a#i nclude<stdio.h>
电子园51单片机学习网H9x[+mbvJL#i nclude<intrins.h>
njnuUms~0void main (void)
电子园51单片机学习网 n JiaE{
电子园51单片机学习网F|:r8LITHwhile (1)
电子园51单片机学习网{T o] w{
电子园51单片机学习网6b L(I,a1J Mu`if (P1==0x01)
电子园51单片机学习网k(e+C8nL{ PCON= 0x01; } //省电模式
电子园51单片机学习网,{Di C7q M/V @Telse if( P1==0x02)
7]5k @4D KD7}YD0{ PCON=0x02 ; } //休眠模式
\fY`Lkd$A5N0else
5D4p+B-r\5M6Y1M,MW0{ _nop_(); }
电子园51单片机学习网`4ZM2}5D.y"K\\N}
电子园51单片机学习网 Tt.o5e6e;t}
电子园51单片机学习网M eU`rx电子园51单片机学习网:p e WK7z%h Ur!S2e
仿真之后,P1口设置仿真参数,在COMMAND窗口没出现相应的提示信息。电子园51单片机学习网 U~ Y F A%my5zy5e
%B7G2q)y-oVV0电子园51单片机学习网I h%d,FB o,Bh
在编写程序时熟练掌握些软件仿真,可以防止一些低级错误。也可以高效地编译程序。
KY R zN*w0
文章评论(0条评论)
登录后参与讨论