找回密码
 注册
关于网站域名变更的通知
查看: 412|回复: 4
打印 上一主题 下一主题

关于51单片机定时器的使用?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-11-18 10:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
为什么我用这段程序想输出周期10ms的方波,仿真的出来差不多11.5ms为什么误差这么大,问题出在哪,下面是程序和电路(晶振12M,仿真软件默认连接)。
- s" \. N. |. h8 V; z) \# o
  • #include
  • #if(1)
  • int count = 0;
  • ***it output = P1^0;
  • void initialize()
  • {
  •     EA = 1;
  •     //EX0 = 1;
  •     //EX1 = 1;//外部中断开启
  •     //IT0 = 1;
  •     //IT1 = 1;//设置外部中断触发方式
  •     ET0 = 1;//定时器中断打开
  •     TMOD = 0x01;//定时器工作方式
  •           TR0 = 1;//启动定时器0
  •     TH0 = 0xFF;//0xFF;//
  •     TL0 = 0x9C;//0xAA;//定时器初值(100us)
  • }
  • int main (void)
  • {
  •         initialize();
  •         while(1)
  •         {
  •     if(count <= 100)
  •     {
  •         if(count <= 30)
  •         output = 1;
  •         else output = 0;
  •     }
  •     else count = 0;
  •         }
  • }
  • void timer0() interrupt 1
  • {
  •     count++;//计数
  •     TH0 = 0xFF;//0xFF;//
  •     TL0 = 0x9C;//0xAA;//重置定时器初值(100us)
  • }
  • #endif
  • % n- \; `, \+ j9 j  u( B

) j9 s1 p. t: B% J$ j5 \$ @
4 u$ y7 }8 `/ ~) ~; U, g$ ^, q' x* G' S5 E) W

该用户从未签到

2#
发表于 2022-11-18 11:26 | 只看该作者
给个参考程序:" y5 h  M- Q6 E8 T: b5 M, q* k
#include  }; }& G8 ]! ?1 ]: M
#if(1)  A6 h% K: e5 X6 ?+ A& H& ]

8 T7 }$ p! N2 o0 B7 D+ l. Kint count = 0;
. }4 w6 D) W% }' |: c
  q% o1 C' g( z# s+ o4 t***it output = P1^0;! u5 N0 ^$ e, z% c5 k2 Q

, _/ `4 c! x$ v* z) p& `1 y& r
$ j! x! v4 `' v( C+ E2 T9 M5 [void initialize()
/ ~& i+ k3 D# ?2 P( c& O{* u: D6 R/ U; M" q
  TMOD|=0X02;! v8 S% |+ j+ v% y1 x' {" o' O
        TH0=0x9c;+ z  r3 g4 _$ N$ k! |3 J: [
        TL0=0x9c;
/ A$ R" ?1 {9 C" F. l        TR0=1;//也可以到用时才启动9 A3 {9 c) v( V
        ET0=1;  1 W- ^7 r. u7 M
       , T- v* j# R  x' Z  ?
        EA = 1;
. D* |6 l. s: d* u, y& A5 U) I   
9 X% O2 ]: c+ u0 m3 Z8 E        /*ET0 = 1;//定时器中断打开
& A( E  @# v  W( B7 Z        TMOD = 0x01;//定时器工作方式 01-16位- E8 t7 j7 s) p# D5 E1 G* \
        TR0 = 1;//启动定时器07 {0 ?5 w! x. J1 C' `5 K1 @2 B" [9 I  K
        TH0 = 0xFF;//0xFF;//
) d% R4 t8 A# P' e% V5 [: ]        TL0 = 0xff;//0x9C 0xAA;//定时器初值(100us)*/$ ]. O1 I1 w7 {. v) v: o
}: v+ b: q5 f- ]- G
# n( X; U  G( `- g4 N

/ K0 t8 X& N" Oint main (void)/ O& M; P; T2 p" t) P
{7 b, k4 L- f0 j7 k
        initialize();, L) G( W( O) g4 t" z. M

0 D3 Q! ?0 S" f! U! f        while(1)
* C$ t% H6 A, R        {
9 X% }4 g" a# T  l/ o& g    if(count <= 100), m& U8 c& f4 H% S: R3 J
    {5 W6 U7 j; L- K5 J' J" Y& {
        if(count <= 50)  V2 K! v4 s0 {" X. y- ^
        output = 1;
0 ]/ x- _* f6 ?' ?' k        else output = 0;
% C, z9 S+ G* x: Y7 {% T4 W; i    }! V: j6 |9 l2 n, W  @. _
    else count = 0;3 Q( u* P( l( |' _6 O2 u8 ?/ C
               " L% N' v  Q* M+ B8 A+ ^7 C
  }4 W% |6 K! m7 c! Y4 Y3 X
}: B6 p0 ~+ L5 X+ h0 r

6 }' i. a7 p/ F, ^, g5 evoid timer0() interrupt 1
: }; t" H. Y' i  {5 o{2 b: a1 r* W" [* N* `
    count++;//计数* p- n/ b0 e4 @2 ?: w
    //TH0 = 0xFF;//0xFF;//
; x. F* \$ M% N! b% ?; M  ^    //TL0 = 0x9C;//0xAA;//重置定时器初值(100us)' ^' ~. P2 i, J! f- [! n: g
}
2 a# `% m1 H% u* A7 E! s#endif

点评

怎么运行之后差得更远了,10ms只剩7ms,工作方式为什么是这个TMOD|=0X02;  详情 回复 发表于 2022-11-18 13:27

该用户从未签到

3#
 楼主| 发表于 2022-11-18 13:27 | 只看该作者
Dollche 发表于 2022-11-18 11:268 G6 v: q# v" x2 J
给个参考程序:  J5 E  I( m4 ]
#include
) F" ?4 o% k5 U' ~) V#if(1)

* l3 I9 q# a% Y: ]$ ?: R( f* f怎么运行之后差得更远了,10ms只剩7ms,工作方式为什么是这个TMOD|=0X02;
  ?, C8 t/ Y! S' X! @  M

点评

//TH0 = 0xFF;//0xFF;// //TL0 = 0x9C;//0xAA;//重置定时器初值(100us) 这两句要注释掉  详情 回复 发表于 2022-11-18 13:36

该用户从未签到

4#
发表于 2022-11-18 13:36 | 只看该作者
niubility 发表于 2022-11-18 13:27' S5 n/ c% v, N! \
怎么运行之后差得更远了,10ms只剩7ms,工作方式为什么是这个TMOD|=0X02;

+ j) y: u. z. S" Q5 G+ {//TH0 = 0xFF;//0xFF;//" j# E" D( z' \. t1 T0 d- d
//TL0 = 0x9C;//0xAA;//重置定时器初值(100us)! ?, D1 ^; s. K. D8 Y9 e9 Q, P
这两句要注释掉
7 u8 b. m& Z4 y: T& A( c; c/ X

该用户从未签到

5#
发表于 2022-11-23 10:02 | 只看该作者
先初始化,再在中断中写定时器的函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-3 12:35 , Processed in 0.140625 second(s), 31 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表