EDA365电子论坛网

标题: proteus仿真 不准确 [打印本页]

作者: Aiby2015    时间: 2015-8-26 11:47
标题: proteus仿真 不准确
我是利用定时器来进行仿真的 下面是我的程序 我打算输出1US的方波但是结果却是40us
' a; g. ]4 o! q9 T4 y: @1 a#include<reg51.h>
5 O7 @  V& }7 A, j1 V+ W! O' v#define uint unsigned int. E+ ?7 T% w4 L: r: }
#define uchar unsigned char
! z! g( t1 n1 q9 i5 s1 E/ p2 wsbit out=P1^3;
+ E( N- D. n, ~2 Iuint num,N;
2 ]& A4 Q3 `* A5 C( }uchar FT;$ ~4 a9 K1 h  N/ M
void main(viod)
. J  q8 |: z( B% e5 `2 ?{                                % y, l7 i5 U: _. x2 w' L/ y$ G
EA=1;//全开  & O/ ~0 Y) A; J9 L
ET1=1;
, K: v/ q& o! ~; q TMOD=0x01;
+ h8 l" z% h" j8 p: n9 I  TH1=(65536-1)/256;8 V: y: ^* D( T& y  w0 e1 ~
  TL1=(65536-1)%256;; L+ V7 n) e2 y8 s' y' F: `
//EX0=1;$ [3 }4 s/ v( ~9 X
//IT0=1;                       
7 ^- h1 y. M1 w// ET0=1;5 Y. A: o- r* I' x- J

, m& M4 l/ O' y' x8 K// TR0=1;
, ~( K1 A: {4 l TR1=1;0 Q. l' `% B% m' S% e" D
while(1);
! Q; c' R, J: L/ f3 s% ~/ j' z. u/ o" Z8 E9 S

% }5 i& |% j, X}- p* z* H' {5 h, t

: J' a9 h9 x9 V# x  |- T6 q! kvoid T1_timer() interrupt 30 N- P" z/ Y/ y/ r0 z8 p* F/ n
{  8 r9 f0 h% n& \3 j3 ?
  TH1=(65536-1)/256;
9 N- b* g' [9 s: S; Q  TL1=(65536-1)%256;
5 T1 ~! K6 H% o) }6 N   out=~out;
( i7 S+ H# Q3 Y9 r  // delay(1);
, p3 s- [8 G8 z* }* u' f //  TR1=0;/ @% a/ d4 h/ [0 S
} / D9 F4 ]5 `# i$ `- X8 D

5 \- Y' ~% N; [$ V
作者: ArthurGXH    时间: 2015-8-27 17:00
1. proteus仿真,我没有使用过。经过分析,问题可能出在你的身上。你用的是12M晶振、12时钟吧。你用定时器定1us,实际单片机在这么短的时间内,只够执行1条指令。你的中断里写了多少条指令啊?若不信,你把定时改成60us试试,肯定准确。
' U: E+ ]9 h" T6 i4 B' j/ G$ [' \2. 遇到问题,尽量不要先怀疑仿真器的问题,一般仿真器出问题的概率是比较小的。经验之谈。
作者: Aiby2015    时间: 2015-8-27 22:43
ArthurGXH 发表于 2015-8-27 17:00' c9 r% P# c5 [# x' S3 V+ U
1. proteus仿真,我没有使用过。经过分析,问题可能出在你的身上。你用的是12M晶振、12时钟吧。你用定时器 ...
8 b2 v) w( V5 c: w" ~0 s5 k
恩 我后面也发现是我的问题。。谢谢
2 f$ T0 u* a. m) W# k




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2