找回密码
 注册
关于网站域名变更的通知

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

查看数: 408 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-11-18 10:35

正文摘要:

为什么我用这段程序想输出周期10ms的方波,仿真的出来差不多11.5ms为什么误差这么大,问题出在哪,下面是程序和电路(晶振12M,仿真软件默认连接)。$ K" v" U( s6 C4 T0 b  N0 O #include#if(1)int coun ...

回复

breaker 发表于 2022-11-23 10:02
先初始化,再在中断中写定时器的函数
VIC56 发表于 2022-11-18 13:36
niubility 发表于 2022-11-18 13:27
% H2 z: \0 G% O. D  @) U怎么运行之后差得更远了,10ms只剩7ms,工作方式为什么是这个TMOD|=0X02;
+ j4 n8 h6 w' H6 f. d
//TH0 = 0xFF;//0xFF;//% P: q! {- m$ W+ T  ]8 P1 ^
//TL0 = 0x9C;//0xAA;//重置定时器初值(100us)
5 v  m' @' B0 C, ]5 C# r6 G3 |! [这两句要注释掉
, L/ p% z0 G6 h& \9 Y4 @) r
niubility 发表于 2022-11-18 13:27
Dollche 发表于 2022-11-18 11:26- X0 F: E3 B6 Q3 O9 J
给个参考程序:
2 P0 w: V& `* n8 C" J* D' }2 s#include
- ^0 k# V3 D  E7 F7 W2 Y! T* I4 n#if(1)
" K& _3 ]: u) M6 {4 I& Z
怎么运行之后差得更远了,10ms只剩7ms,工作方式为什么是这个TMOD|=0X02;
2 }. U: `  x2 H* x, W: K$ F

点评

//TH0 = 0xFF;//0xFF;// //TL0 = 0x9C;//0xAA;//重置定时器初值(100us) 这两句要注释掉  详情 回复 发表于 2022-11-18 13:36
Dollche 发表于 2022-11-18 11:26
给个参考程序:& `! x: k, q2 p+ K  W' V" ~
#include, F( F" Q" U; t' U4 [
#if(1)  c( J2 J9 Z( Q& H8 T$ U

+ I' [9 d" ]* f( tint count = 0;
; b% Y$ [7 H+ |5 j# P! P) E
- U2 e% q& k7 t5 Q5 r/ B, h2 Q***it output = P1^0;+ t1 p: Q- V/ u  L- y

- g6 Y  ~9 o, X5 z$ \" B' W0 g
' G' C6 B! R/ K* k/ }; Uvoid initialize()9 Q( g! M, d" Z2 f
{4 ?7 m; _# {7 \& Y, h7 v* X7 T* r
  TMOD|=0X02;/ |9 N$ z0 X8 u/ q, Q
        TH0=0x9c;
5 A  p5 n4 L' y0 a( d& [8 @( c5 S        TL0=0x9c;
% f1 H4 l/ J0 J& l2 [        TR0=1;//也可以到用时才启动& G  C6 S- e% F. k" I! N& ?9 A
        ET0=1;  * s8 J& m7 D- r$ o
      
! J! ?# c1 W# G" a9 ^        EA = 1;& d7 ^5 Y# t; ~, t
   
4 a1 h. A) m$ ~& X( r        /*ET0 = 1;//定时器中断打开
; X: H7 f8 S6 L  V  g5 f  H1 ^7 K8 O# O        TMOD = 0x01;//定时器工作方式 01-16位
9 S. o' V: B) ?7 B" [        TR0 = 1;//启动定时器0( ^- k; n- _, v8 K
        TH0 = 0xFF;//0xFF;//
9 _" Q" W; d- O: z        TL0 = 0xff;//0x9C 0xAA;//定时器初值(100us)*/9 M5 W. C( W- O3 o7 a
}& C6 g2 l0 B  N- x- A
& @. J0 _" b$ p0 F9 t& ?0 b- U: i

" A0 P6 M- X- ^# U0 w  W4 Eint main (void)0 E. Q& T: S( `& Y
{
5 ^) m& G. r. P! U* {$ ^        initialize();
3 U" L' r) @! ~2 T, `6 V2 g- k6 q; h
        while(1): d* s" |% J" e
        {, }; v! \3 g# t3 r  Y' c1 \
    if(count <= 100)
3 O9 H5 b$ K5 J% W: u. I    {
5 C% h: |2 n+ S" `' Q        if(count <= 50), Z0 a; F3 A, n5 l" L" m+ ]4 g. R
        output = 1;0 V6 I4 e$ ?; }4 R+ I. y$ u
        else output = 0;
# @# P% K* Q& w# D' P- Y' G    }. ~- M# Z6 @6 `# m
    else count = 0;$ r$ c, j- N0 p: C$ F1 B  Q
               
$ p" {4 M5 W! D' B# ^% S  }, q0 N5 ?9 D8 h! p
}
6 q* @  }' t( j1 h/ V2 n
3 I3 B/ w4 m0 U! |$ fvoid timer0() interrupt 1
- k2 o; b& S( D3 U0 M" Z/ Q" c1 @2 E{& ]3 i# [: k$ g/ _7 H2 a/ V& @; l
    count++;//计数$ x1 X8 f* G1 T$ t9 G) o* Q2 N
    //TH0 = 0xFF;//0xFF;//, f; ~) g  h7 h, B$ G& I. \5 I4 r
    //TL0 = 0x9C;//0xAA;//重置定时器初值(100us)
4 t3 |/ k5 i8 L8 `$ o2 S7 S3 ]  \. J}/ I) X  {' m5 o
#endif

点评

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

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

EDA365公众号

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

GMT+8, 2025-7-14 03:27 , Processed in 0.125000 second(s), 29 queries , Gzip On.

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

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

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