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

这个count在代码里起什么作用?

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
我想用DA(PWM)来实现一个呼吸灯的效果,没看懂count在代码里起什么作用
' r$ g( E8 @, i
# i3 i0 \; l. c! T- I  b/ R#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器9 z- g$ P" ^* ~+ n  w
' y2 K$ _" [3 s( o# j; I
typedef unsigned int u16;          //对数据类型进行声明定义
- U# ?7 X7 F/ t5 |% ?& N: J) [typedef unsigned char u8;
; w6 U$ G0 F4 _( T2 R: s. S$ ~/ ?7 ^5 {$ A# \" n  O( L4 L
//--定义使用的IO口--//& _. j# Y9 V0 g5 c
***it PWM=P2^1;
" Y- A% y$ ^' m8 s- D. d0 A* p- Qbit DIR;% q) b2 H6 J; c3 s
8 _1 e/ }; s% p% S+ ~
//--定义一个全局变量--// 7 m' K6 n# W3 f6 W% J. O' k% B
u16 count,value,timer1;3 ?( N# D5 ^' \8 H, }; B
+ |2 b3 X! G$ h1 N+ o
/*******************************************************************************
" g9 j- r: y$ l( o1 b# G* 函 数 名         : Timer1Init" K& E' U7 _. q) `3 L
* 函数功能                   : 定时器1初始化2 e+ d& b4 T. N9 {$ J: a
* 输    入         : 无
8 L% X/ O( [; t7 b7 M, Q" m7 x( Z* 输    出         : 无
2 a/ e+ ^8 W2 G9 ^# E*******************************************************************************/+ s( Q! }) y  x2 @" ?9 q( x
void Timer1Init()
" \: N# `# Z' n+ {0 O; m" `{% Y* D3 s) A$ a
        TMOD|=0X10;//选择为定时器1模式,工作方式1,仅用TR1打开启动。
" f  |" h& z0 M5 l9 e/ T' V9 g- L3 z1 k. }; k( ^" o9 H! z* C
        TH1 = 0xFF; ( O& C) Y) X# M( R9 C! {
        TL1 = 0xff;   //1us
6 m- `2 `5 i. \! V                $ H, d5 S7 c0 u" Z
        ET1=1;//打开定时器1中断允许
# P2 d/ k& d" C. u! S& V        EA=1;//打开总中断3 H. U  [7 J- v
        TR1=1;//打开定时器                        7 l- |4 d3 {1 ]! e3 j3 R: |
}/ ^! e7 _  u' T7 v5 i+ B4 c$ T
/*******************************************************************************
% _. X. F# a3 u  S" Q+ G0 ?* 函 数 名       : main1 P0 p$ G! `. V: x" \0 t3 t
* 函数功能                 : 主函数8 L0 H* ~8 T- W. u9 y/ g: k
* 输    入       : 无
' d% t0 q8 I, T( G: h7 A. ]# A* 输    出             : 无; S; O$ M3 u* i$ P; Z
*******************************************************************************/# c4 y5 t$ ~: i& _2 g
void main()  h4 j6 d7 ^+ Q. M9 O. ~
{        
# \* G) r; q5 T6 L+ U# Y& s        Timer1Init();  //定时器1初始化
4 X- i9 \1 N. `6 e7 v1 o5 H& c        while(1)1 E+ A) P3 f# b& G6 ?" s
        {5 G! g+ K3 C0 @6 c0 q6 P% |; x
                if(count>100)                                                        
  ~; w+ X+ I  R) o; Z                {  $ i  i) w/ s% [! N
                        count=0;# l5 X0 V- Z% d. R- Y* v
                        if(DIR==1)                                           //DIR控制增加或减小
4 T* g4 I: ^5 n" \' f. r                        {+ Z4 S) G# t4 a: j! l& _  i: j, g: f
                          value++;4 |" q0 F: C, `, A* X- W
                        }                        # U0 r9 Y1 d0 o/ C* @6 T9 n, x
                        if(DIR==0)& \( `5 ^2 b1 T+ S/ q
                        {
( r3 _& v$ S! m2 O% S0 [, {                          value--;
) \1 x! ^% ~( R                        }
; l. A2 C  d, P/ j% c5 O: z+ v                                5 P; h- a% i2 T( f* L- ~1 [
                }2 z! b3 D( U2 y2 k  t

& V3 L& j1 n8 x: E( m3 X6 h                if(value==1000)
0 {3 M* i' @# Z% Q                {
( f1 U; {  G3 N4 Z3 y  _: t                  DIR=0;
+ V; ^) L6 U$ C) z2 Q! ~3 U6 n                }
9 L6 `: H- q4 [* k                if(value==0)
) S; U# I2 D, u# P- i) Q4 j1 a                {8 m8 [7 e; W. D9 Q9 Z  F
                  DIR=1;
/ K% o1 Z* t: [2 F2 g$ d' E7 Q- N! q                }        9 B, _) i  T) \6 ?% [7 ?/ X
                                
  l' x' `+ Y- S, p. T3 f& [9 {                if(timer1>1000)  //PWM周期为1000*1us
  M. U. M; u5 O* l9 H4 o( C                {- e# N9 i! f# p3 |7 V
                        timer1=0;; h& x# o% j+ D0 o) p$ X
                }
# ^& S2 \& Y# o* p                if(timer1
- S- ^! C& l1 Z; f7 z/ j1 u/ j                {
! m8 f7 n$ t- a  w" q                        PWM=1;% {) g, Q5 _# D/ P; d! f( Y* e
                }
. L% p, K( z- n( }+ W                else7 A0 d2 Y5 |* }- u/ F9 Q9 U' |
                {
: d: t5 m1 O( R& t2 s( q! T5 H                        PWM=0;
. K4 q3 l$ `& L7 w+ S4 h                }               
- q8 Z- Q' R! q7 A! E. O        }                0 ]0 Z3 s( j, m5 J) p4 O, ^, F' v
}* c% @7 ]* _7 K. Z
/*******************************************************************************
4 _2 A9 `( q7 L" C" R* 函 数 名       : Time11 L+ p/ r6 t, {* o; i0 {. i
* 函数功能                 : 定时器1的中断函数
8 \! Q- {! }6 P+ [+ h7 s* 输    入       : 无
) y* k$ {4 a" d* n* 输    出       : 无
, k% H/ Q  L( f& W0 `3 I0 |*******************************************************************************/
, ]$ U7 N; {# c9 W3 Gvoid Time1(void) interrupt 3    //3 为定时器1的中断号  1 定时器0的中断号 0 外部中断1 2 外部中断2  4 串口中断) G  f$ v+ p. O* y- ?9 J& S
{
% a% o- R' N7 I& X        TH1 = 0xFF; ) K1 H; e3 i! Y! M' R4 g/ E7 P* Y/ d
        TL1 = 0xff;   //1us2 }! T+ F2 Q0 N
        timer1++;
* s3 X* c2 z5 x2 }* U$ ^    count++;2 `9 `. M# k$ Q0 G% K1 Y4 W
}
! |4 Y$ {. y  A" [

该用户从未签到

2#
发表于 2022-11-1 13:38 | 只看该作者
定时器1如果定时周期为1us,那么COUNT决定每100us value值变化一次。

该用户从未签到

3#
发表于 2022-11-1 14:04 | 只看该作者
这个和时钟周期,机器周期有关的,计算时间用的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-28 01:43 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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