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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
我想用DA(PWM)来实现一个呼吸灯的效果,没看懂count在代码里起什么作用: N; N+ Y9 U$ S9 {7 h

0 ?! w2 n: V+ _1 F# {( C  I( q/ A+ s#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器8 }& X3 Y! O0 W. u) B% e* a, x

+ v3 {" I: r7 a" O" F9 Wtypedef unsigned int u16;          //对数据类型进行声明定义$ ?# A, g  c. j6 F
typedef unsigned char u8;
. J" `8 L6 f" l9 ^. {+ O) G5 f9 D; R, g: P3 N5 R4 ]
//--定义使用的IO口--//- v8 D% l6 c$ H6 L9 e$ R. Y& p
***it PWM=P2^1;
, v# v; U- K3 M/ jbit DIR;
( ?- {! y- i  Q) G% w8 X1 Y( I- O: s8 K; L: V3 Q# c
//--定义一个全局变量--//
& Z3 Q. I) D$ k# r) tu16 count,value,timer1;
) ~( e! ?& {. k5 a3 U7 w1 s4 C- u& `. p6 [4 a
/*******************************************************************************
- ?" `. I: `. J$ N1 C* 函 数 名         : Timer1Init% Y( o5 U8 [" k' w. Q! G
* 函数功能                   : 定时器1初始化. B' f, M9 O& o+ ]) K
* 输    入         : 无
% N3 h, o/ Q5 O! I! D* 输    出         : 无# c2 H  j3 K5 X
*******************************************************************************/) W0 \/ _3 J" R+ a
void Timer1Init()% W" q5 x: ^+ Y1 j; ]  [, F% V  k' }* G
{
& B. [" A3 g! G* Z1 ?1 c7 d0 {) o        TMOD|=0X10;//选择为定时器1模式,工作方式1,仅用TR1打开启动。
% \, [5 @+ y; y* C* Z. S
1 z  j4 A) v5 o( D6 Z) ~        TH1 = 0xFF; : i! M+ a' f$ N; {6 T) _4 }
        TL1 = 0xff;   //1us9 J8 X; E+ u: h; b( n& h
                  A3 |" R+ k: |) V9 W2 u2 z
        ET1=1;//打开定时器1中断允许
# r2 C  d' s4 {1 I        EA=1;//打开总中断" I& p+ ~* ~% I/ J% {( }
        TR1=1;//打开定时器                        
4 B- v; m% ?! U. g; r}( j  v9 U- ^7 P' ^
/*******************************************************************************
! v9 j/ ~1 A2 r& R' X6 {2 f: `* 函 数 名       : main
' A& ^- S' J5 L' ~3 r0 ]* 函数功能                 : 主函数5 G2 H: S) a) `: f5 T% P. ?
* 输    入       : 无
' o- N4 {! k! L5 i$ h0 @0 T* 输    出             : 无. Q+ a% ?5 ?+ _8 H/ r
*******************************************************************************/
( T) E' y1 y  _# Q' W6 f* U) Avoid main()7 R1 K8 q, b# \0 w* b0 c& J7 g8 F
{        
& }/ {- O4 W: q$ [- w        Timer1Init();  //定时器1初始化$ P* {, l+ \  I3 b. i) P
        while(1)9 _  b( Z0 g3 ^& I
        {
9 H; G+ C% x, }                if(count>100)                                                        / y( E9 x9 F6 X: S
                {  5 o& p1 _- q+ \, p7 H( |
                        count=0;- Z0 I4 o/ |7 F/ Z2 e% a
                        if(DIR==1)                                           //DIR控制增加或减小
4 C  V' i/ F$ ?                        {
) ~3 e- v; ~6 }- k' A9 G                          value++;
1 H9 h" }. w  J                        }                        
+ u+ Q% r  w8 M8 L& [( M                        if(DIR==0)
- j& |, I3 z/ V; ?. k1 P* z  l                        {- [& o# H6 {4 a5 _  ]4 N
                          value--;
2 g5 r( K5 {8 Z, ^! Z6 E: j                        }
# i+ g" |9 u: O. L% |3 q1 m( B                                
) O$ h) U8 c& e9 T, m( U. |                }9 A( e& d4 i3 F

* N# I2 v  U8 R  C: j9 D! q) ~                if(value==1000)1 r! z; d$ S0 x2 g) B7 z
                {" K' A" B, l) E2 \: \0 n$ o3 ]4 i
                  DIR=0;+ u% W' K" Y& ~; ?
                }( t0 N" A4 s7 {- _4 A/ q
                if(value==0)
5 I" ~! i5 ]8 ?2 |! \                {
/ [% U* l/ x2 [: p9 F) S5 }$ B                  DIR=1;
/ G' l5 k$ K% s, p' u; _                }        . g2 l9 C$ x( g3 l& X& a! v* F) k8 ~
                                
# Y6 Q7 j# ]8 D. ^6 {; n                if(timer1>1000)  //PWM周期为1000*1us
% b- P7 d+ V$ @1 K( L                {! L& V9 `9 ^# v% b5 W, m. B+ L
                        timer1=0;7 T. J. s: J- J
                }
) m  H: Z6 |! }+ \4 t                if(timer1
$ [+ B5 T7 q: Y0 A! w: h                {8 g- C5 g1 n4 j) t# R/ E3 h
                        PWM=1;: H  F" z5 T) U6 _4 ?/ m9 V
                }
& B! j3 H4 F9 [6 H% X. ~1 G8 C                else
5 K4 n, e- L9 @9 g                {$ N: c: Y/ A" S3 e8 K, E$ f
                        PWM=0;
# @8 N, [# R% p& k                }               
+ x7 a, C8 ~1 ~- S# e  f        }                0 N. D+ b* o9 e2 _2 Y( a# M9 \% a7 Y
}
% X0 N. u2 V; @4 Z8 S/*******************************************************************************
0 U$ ^% x: k2 h" {* A3 _4 P* 函 数 名       : Time13 _' ?; b8 y, w
* 函数功能                 : 定时器1的中断函数
7 H, ]* Y( U5 \+ Y% _; v- p* 输    入       : 无: {2 m% n% e1 Y
* 输    出       : 无' ]) O  d% l; Q: ?/ p
*******************************************************************************/, {3 `% w! w% j8 o( m
void Time1(void) interrupt 3    //3 为定时器1的中断号  1 定时器0的中断号 0 外部中断1 2 外部中断2  4 串口中断
: u6 \, W% p! W7 j8 E" X) k{
: O- g* D% N) P7 y; X        TH1 = 0xFF;
  S: r- M( E: k( Q7 v* |- O* H* j        TL1 = 0xff;   //1us
8 ~9 k3 V3 `* s: W' x' R3 j% G        timer1++; 8 j& H+ S/ Q% }" s
    count++;0 _% H4 D! H% P/ ~* p
}" Y% @: {3 r7 h9 S' n+ k) b! V( S

该用户从未签到

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-9-10 21:48 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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