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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为什么我用这段程序想输出周期10ms的方波,仿真的出来差不多11.5ms为什么误差这么大,问题出在哪,下面是程序和电路(晶振12M,仿真软件默认连接)。
) D) o" k" l2 I9 E4 V- `5 }! L
  • #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
  • ' _* z1 c) L4 D8 ]9 T

+ \; u7 T7 L8 V5 d" v0 F* c, X" x: F+ S' C% B
' n1 Q. p$ E0 A4 y4 [

该用户从未签到

2#
发表于 2022-11-18 11:26 | 只看该作者
给个参考程序:4 v7 V2 ~3 S+ a
#include' P* ^& o6 j% S! r% U
#if(1)8 W# t/ p: J9 G
# V% k+ ?  |+ j. l4 L9 e
int count = 0;1 u/ M- ^" h7 Y7 u$ p7 N% y

5 w; Q" Y$ C0 M& g# p***it output = P1^0;
; c, [$ a; ?, o: G7 m" R/ }2 l* @) ^; h' G

0 t3 m6 O8 ~% Tvoid initialize()6 d( K9 ?, k4 ~5 o- ~" H& g2 Q  K% u
{9 t+ Y, [7 @, T
  TMOD|=0X02;
) O1 r' }# a' w- W. J% W' y# r3 @& E        TH0=0x9c;( ^$ S! A# w0 ^  ~# k0 v
        TL0=0x9c;
9 K* `. z* H* G1 ]! ^        TR0=1;//也可以到用时才启动
9 p3 h+ Y, h5 ^% `2 O( M+ n        ET0=1;  
* G( k% P% l. [, r      
8 Q+ l( Y0 h1 w7 |0 I; G: T/ o( a; z        EA = 1;8 W% ?0 V* c1 d- ?& @3 g
   . U- e/ D$ c" K$ T
        /*ET0 = 1;//定时器中断打开; I) ]) V( v2 V6 y/ m1 B
        TMOD = 0x01;//定时器工作方式 01-16位1 e$ K  W9 j4 D+ K
        TR0 = 1;//启动定时器0
3 a' R7 q" @& B8 d1 b        TH0 = 0xFF;//0xFF;//
& n! s: D6 P: F) [* V3 y9 x; v        TL0 = 0xff;//0x9C 0xAA;//定时器初值(100us)*/# o) x1 i, k% X. `% d% b- E# V1 C% Q
}
' c1 u0 @% e7 u
# t6 R/ q: |- E7 D0 V4 o, b( V: c: D! C
int main (void)
/ V7 S3 c3 |: M0 t0 I  o{4 [7 }0 A% Z* }9 T- T
        initialize();# J9 Y! w2 F9 L0 t/ W

7 ^8 Z/ Y2 k& B- `& x        while(1)3 ~9 r& K* Y' r% d2 q
        {
- z- D1 |, h6 [, E# x; J& a8 h    if(count <= 100)
) j8 e, \5 B8 {6 o    {  B  i6 q$ U' N* k; z2 v: J1 e
        if(count <= 50)$ Z  |9 O8 a# q% S+ H2 t4 n9 H
        output = 1;8 j% w. q* d) r# m% c! O% w2 W& p" ?
        else output = 0;( q: V/ L, X& h. y
    }$ L6 C2 ^# t" ^7 @/ u
    else count = 0;: P5 n' r% |) o+ Y0 e* X! D
               1 h$ @( Z5 L( Y: O1 r% K
  }
: ~. }# O- D9 {. C: Z; S7 D}
+ u' V# {' o5 e- r- r+ Z: l6 E3 G2 A% w
void timer0() interrupt 18 ?- _2 o8 u  j% ]% R, i1 i' }
{$ {; O& k  H+ O7 h( V
    count++;//计数
; |5 X. _( G9 Y! P) F    //TH0 = 0xFF;//0xFF;//
( O; H& V  w% t) K5 `# c9 G- Z" j    //TL0 = 0x9C;//0xAA;//重置定时器初值(100us)
$ F" _# O5 T) }8 M& e6 ~1 |) ]}
+ M2 x" `( v2 w# d0 U#endif

点评

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

该用户从未签到

3#
 楼主| 发表于 2022-11-18 13:27 | 只看该作者
Dollche 发表于 2022-11-18 11:26
# B3 t4 G. t% f) U- K' D: S5 [5 k给个参考程序:- p# N5 c7 ]* Q( E
#include# D$ W* _7 ]" f( I7 R% d% C
#if(1)

! \- S. s# U; u; l# W怎么运行之后差得更远了,10ms只剩7ms,工作方式为什么是这个TMOD|=0X02;! |6 f8 m1 Z3 w. O- q

点评

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

该用户从未签到

4#
发表于 2022-11-18 13:36 | 只看该作者
niubility 发表于 2022-11-18 13:27; G- I7 W) A( D$ F. ?( }" a
怎么运行之后差得更远了,10ms只剩7ms,工作方式为什么是这个TMOD|=0X02;
* m' G5 g, n) ]/ j( F. z3 Q; a
//TH0 = 0xFF;//0xFF;//  L$ J, c/ n6 r
//TL0 = 0x9C;//0xAA;//重置定时器初值(100us)- p' M' z7 @  X# w
这两句要注释掉2 Q7 n& p2 K0 T  [7 k

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-11 01:29 , Processed in 0.125000 second(s), 31 queries , Gzip On.

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

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

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