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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为什么我用这段程序想输出周期10ms的方波,仿真的出来差不多11.5ms为什么误差这么大,问题出在哪,下面是程序和电路(晶振12M,仿真软件默认连接)。
& ~' R! f- ?+ X4 W
  • #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
  • 6 U" e- v8 h# {" @& g0 a) w
! d9 T, E9 b! z. n- N
8 ^, B! {) U& ^# p  i

0 W0 _1 K/ I; Q: H$ v4 i

该用户从未签到

2#
发表于 2022-11-18 11:26 | 只看该作者
给个参考程序:
# C3 e7 E2 x( u$ |" z3 {+ s8 B$ B#include6 Q3 T# c, E6 G% N
#if(1)
( R  J- M: m, P- T  d* Y: M: x2 l0 w
int count = 0;$ |2 S/ y- H7 r( y  ?% h  L
& X' u3 N; \& }) S  e( O
***it output = P1^0;- s, N0 d6 N: q/ ^' T4 ]
2 J; x- v2 ~& d' m( l3 M0 C& n

) N$ o( ~& G8 x4 Qvoid initialize()" D: c* Y7 K8 `$ _3 ~
{  a# j9 @: W  c% p& _
  TMOD|=0X02;/ ^% W; z. c- f8 {! X$ H! O
        TH0=0x9c;' a6 q. p' l- E8 B2 n# d8 k
        TL0=0x9c;. v: S: O# B) t- ?
        TR0=1;//也可以到用时才启动& h; v' ]/ U5 c* s
        ET0=1;  ! s& z% ~9 Y1 R# Q: A8 f
      
) R% _0 Q) z) m. b% Z        EA = 1;9 N! h" h7 N" D% M* R- H( E1 C8 h
   & D  C! ^8 h$ b/ c  i1 B* i
        /*ET0 = 1;//定时器中断打开% B/ u% c9 K7 L. H5 U& \8 `0 c
        TMOD = 0x01;//定时器工作方式 01-16位
* Q& f2 G& O+ j- y3 b4 Q        TR0 = 1;//启动定时器02 S  }. |* @% l4 L
        TH0 = 0xFF;//0xFF;//$ m$ w; k" i9 i
        TL0 = 0xff;//0x9C 0xAA;//定时器初值(100us)*/
: i7 |4 v( z6 L% D6 U( _% E}% L+ U2 H+ N  Q" {0 A$ z2 p

; z  v+ c+ q# q- o- _$ X' O2 ~
/ L# e8 }: B- W3 B: r5 g) L! V" {7 sint main (void)& g9 w: L% P) M6 R( y% A
{1 J- U4 u: |4 X; \1 @
        initialize();& U5 @/ S8 Q& ^5 ~
+ @) ]" E! b0 G; p
        while(1)' q( l$ [2 s" }  Y  R; |
        {
* B" }4 z6 M. @& B& q9 |+ Y    if(count <= 100)2 w2 q, g8 p) g0 w. Y  |
    {
+ \* }! U9 V. x* C* _  ~/ T% ^        if(count <= 50)% U/ ]- J3 G) T6 Y; u. W2 k: r) p
        output = 1;# }' \0 q7 K) D/ T/ w. g- x
        else output = 0;
2 O( v, L/ Q4 B1 z4 j5 ~    }
/ Y# }3 g- O& k) |4 G+ a# `4 {    else count = 0;
% ]; G: W% b0 F               $ c* c& l0 |! R0 p0 W) A- J) q
  }
8 W6 D- ]0 V2 ~}% k, b6 m: `  y( R. `

! m/ {# x1 H; {& r" Bvoid timer0() interrupt 1
/ p# Z/ ^% \2 J; \; s{5 g8 w$ K: |/ L" _( o: v5 X
    count++;//计数7 y3 I# \8 E4 m: S
    //TH0 = 0xFF;//0xFF;//" i" f" i# a2 @9 Z
    //TL0 = 0x9C;//0xAA;//重置定时器初值(100us)
/ Y8 n6 S' A5 g}
" Y2 E0 L7 y4 n9 ^) Q#endif

点评

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

该用户从未签到

3#
 楼主| 发表于 2022-11-18 13:27 | 只看该作者
Dollche 发表于 2022-11-18 11:26
, [% Y' K' V: o* H给个参考程序:
" a' T' P/ `0 I8 P; I" t$ j! V; t' y#include
2 Y- |8 s7 S. m" w5 G$ x7 r, }/ d#if(1)
8 T" B, y! O- {0 C, B- d: Q3 N
怎么运行之后差得更远了,10ms只剩7ms,工作方式为什么是这个TMOD|=0X02;. [2 L- r4 w0 T

点评

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

该用户从未签到

4#
发表于 2022-11-18 13:36 | 只看该作者
niubility 发表于 2022-11-18 13:27
) o; w* W7 w( {$ [" J& ]怎么运行之后差得更远了,10ms只剩7ms,工作方式为什么是这个TMOD|=0X02;
5 L9 d; y! X  j- }7 y$ f) U/ C/ Q
//TH0 = 0xFF;//0xFF;//
* L. A- V1 F$ Y2 Z//TL0 = 0x9C;//0xAA;//重置定时器初值(100us)2 g4 B2 l4 q! f7 z
这两句要注释掉
2 D1 l& A! w9 \3 _  \

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-23 13:45 , Processed in 0.140625 second(s), 31 queries , Gzip On.

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

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

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