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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为什么我用这段程序想输出周期10ms的方波,仿真的出来差不多11.5ms为什么误差这么大,问题出在哪,下面是程序和电路(晶振12M,仿真软件默认连接)。
( L4 ~* x. b8 j* I6 o/ v1 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

  • 5 T/ e9 u; U! b: J" P% `

0 p/ m; {/ W! w
7 L$ ^1 C1 t4 ?8 H9 f4 U6 b) G7 S
4 d- J, G6 t% P" d: f

该用户从未签到

2#
发表于 2022-11-18 11:26 | 只看该作者
给个参考程序:
% B  W9 Z4 q- v  s#include
5 m$ D6 ^9 I0 J6 v6 p: i#if(1)
- ?4 W' K  S9 f( N# F( o& f2 F" V8 d- j- J5 A9 }8 P2 \/ C
int count = 0;# G7 w8 }  G) |) S5 ]) H; k: A

# m# D$ z: b& Z+ V***it output = P1^0;
) f1 Y7 |* O) s' o; ?" O4 q5 d5 `
- V+ P# c1 j4 R, f: m! g# A) K* e* n7 w! @( d0 b9 A
void initialize()4 l1 N, S8 C( j& \
{
. N& U5 X1 i) [  TMOD|=0X02;# R9 J* h8 d* j6 G% H3 N
        TH0=0x9c;" h$ M' B+ A  `) \" e& e
        TL0=0x9c;
& i7 l; I* C4 R. p- Z        TR0=1;//也可以到用时才启动$ {3 }+ W' a" e+ F- S- y
        ET0=1;  1 ]+ z" t: `- k- P1 [# G1 k$ S1 ^
      
. e0 F9 j/ |# u9 r# I7 n) p* S        EA = 1;
4 S9 M9 r7 L' a% c$ M( `$ o/ D   2 t' T# J, p. p5 b
        /*ET0 = 1;//定时器中断打开) b9 T% [5 c/ }& W4 s7 X3 v
        TMOD = 0x01;//定时器工作方式 01-16位
5 l( z& N8 J8 Z; n        TR0 = 1;//启动定时器0
9 p  {3 B6 `2 @3 `! N) f        TH0 = 0xFF;//0xFF;//
* y: _4 N2 h7 H$ X  i6 E        TL0 = 0xff;//0x9C 0xAA;//定时器初值(100us)*/' C8 b( c, t2 ^8 X1 y
}. q4 k+ {7 P, U
' i% }& }8 I3 q- h  B7 e; c
, [: P& J, C/ v! w( a1 Z$ t
int main (void)& l/ @1 R! K  q, X* o! F8 C) Y6 X6 H
{0 I9 o' a+ z3 E$ |
        initialize();
4 R' k9 ^4 R" w; ~8 J, l5 @# I4 |5 T; F& q5 _0 ?" k/ J0 x; _, s
        while(1)  Y7 h: J2 Y6 k9 r$ L
        {4 u; e2 t- O$ G& {+ ]" T" z  S
    if(count <= 100)
5 F( s  x5 V9 y1 q2 `    {
- ?: i/ ^! n! V. q$ Z        if(count <= 50)3 P7 Z. n$ }' l; [) ^# ^8 N1 [7 C( g- {
        output = 1;
2 N; M8 X3 M1 A/ m        else output = 0;' ]& J' v/ F  t4 v( K
    }
* {3 P" L0 n8 d' q/ O8 |) c    else count = 0;
3 M/ d: F+ E1 ?$ ^" l% i' D$ h; F               
0 e5 L9 c$ Q, E5 }' S  }/ I. j6 m1 [. Q7 K% q
}
) D3 k" k! M/ C* x# M  ]& G; \+ g
  C; H% l. b% t* d1 x( D1 Z8 ^void timer0() interrupt 16 O3 b/ e% A8 x
{
9 I4 f8 T4 Z& v% g4 x    count++;//计数4 e. H# Z: F; y8 E4 Q% ?
    //TH0 = 0xFF;//0xFF;//2 J3 b; S, K7 r1 F
    //TL0 = 0x9C;//0xAA;//重置定时器初值(100us)
( z  a) g/ S1 C- u7 R}9 p( {5 G- x& W: r* k9 E
#endif

点评

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

该用户从未签到

3#
 楼主| 发表于 2022-11-18 13:27 | 只看该作者
Dollche 发表于 2022-11-18 11:26
" Y1 f3 z" a8 U8 F4 N) P' Q给个参考程序:
# b6 C* L: H9 `$ s) s0 d' n, k2 k#include* S. Y/ i" {- h4 @7 N& [& Y) Z5 Y' d
#if(1)
% m5 s8 Y3 k  ?0 Y$ |/ x0 l
怎么运行之后差得更远了,10ms只剩7ms,工作方式为什么是这个TMOD|=0X02;; j% l# K; M$ x0 c

点评

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

该用户从未签到

4#
发表于 2022-11-18 13:36 | 只看该作者
niubility 发表于 2022-11-18 13:27
+ p; Z/ c& U; P& Q& g( q怎么运行之后差得更远了,10ms只剩7ms,工作方式为什么是这个TMOD|=0X02;

# R1 g: {, D( P8 F' l" @. Z//TH0 = 0xFF;//0xFF;//0 @+ J  R) L& K
//TL0 = 0x9C;//0xAA;//重置定时器初值(100us)  F7 m3 V( y* T: E/ N7 |/ q
这两句要注释掉
3 ]+ R5 M$ G# y5 L" j

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-10 15:05 , Processed in 0.125000 second(s), 27 queries , Gzip On.

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

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

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