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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
我想用DA(PWM)来实现一个呼吸灯的效果,没看懂count在代码里起什么作用
: E/ y9 I! C/ X$ d( w/ M# e
  [$ e6 X( y7 H" U#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
4 f) b, s5 d% ^& Z! C1 [9 `7 q1 Z( l8 D/ H/ R
typedef unsigned int u16;          //对数据类型进行声明定义
) H! _. ?* D( b4 j+ X7 V. [, m0 |typedef unsigned char u8;
; o, e' c) n5 @/ r8 K; R2 P1 a$ [  X" j! P' X: F
//--定义使用的IO口--//
4 f* Z8 A) `+ m. I5 f/ x***it PWM=P2^1;
2 z$ U9 p1 S" D5 C9 ~0 o. Ubit DIR;7 U7 F- b( t: @$ s3 J" S/ Q7 d
3 {6 e# ^; U# ?
//--定义一个全局变量--//
2 {- d1 ?8 Y+ n2 t2 l5 Tu16 count,value,timer1;
. N2 s) R) o5 j) [  F- L% T7 x8 W* ]* {, _" {6 W7 {
/*******************************************************************************5 e7 I$ E6 h8 C, H, T9 Z1 }7 B) w' r
* 函 数 名         : Timer1Init
) W7 f2 o) w6 Q" n6 V* 函数功能                   : 定时器1初始化7 }5 c" i1 J+ t8 E- z" Q
* 输    入         : 无
8 ]' r9 H+ e1 i* 输    出         : 无
% r1 o* R9 E% |0 t' H/ x9 N% S*******************************************************************************/
  Q& I3 h' z+ t3 }& q5 ]$ S" Avoid Timer1Init()" N: Q  t9 U7 G' A* ^* ~- B3 u6 Z
{
4 s% [, e4 V+ E& j4 t$ ^/ O        TMOD|=0X10;//选择为定时器1模式,工作方式1,仅用TR1打开启动。
7 M; |* J% W2 S% r
3 ]) G6 O6 U0 u" D- \        TH1 = 0xFF;
) ]0 ?) m5 q$ O! f3 b8 K        TL1 = 0xff;   //1us
, A" p( u8 G( m: B1 s! W               
8 C+ ?' B, ?7 b5 t7 X8 Q! [        ET1=1;//打开定时器1中断允许
# |9 S: F, g! X0 }7 Q% g        EA=1;//打开总中断" y. ?+ G6 {9 D# f" q. J$ m; R6 E
        TR1=1;//打开定时器                        2 e# ?7 a" A0 f- y  y# E  k
}
) O2 x6 p' K' N9 u4 I/*******************************************************************************' d3 [% I& d$ G9 f& J! P
* 函 数 名       : main7 G7 G6 b6 E/ G3 e3 r
* 函数功能                 : 主函数
3 u) M# h! j4 |0 s* 输    入       : 无
  Y( R0 V( M& a& W9 D* 输    出             : 无
7 Q" g7 _9 d5 B( @3 x*******************************************************************************/  |& d" D: j$ `2 E& `6 E) |& I9 O5 U+ [
void main()
& u! U0 f; q' [! q1 x{        
( V8 M4 N: i/ [0 S9 `        Timer1Init();  //定时器1初始化+ j3 z, _1 ]1 ?1 ~8 N
        while(1)
& f+ ~% a+ @' P8 k. ^        {6 [, w; N! e: F3 E; V+ l
                if(count>100)                                                        3 m  E" e4 k; n- c
                {  5 [4 F7 f3 Y$ N' X8 z
                        count=0;: l  k9 j9 |( \  O9 L) Z  l1 `$ b
                        if(DIR==1)                                           //DIR控制增加或减小6 w3 H* K+ n; _  z! S* S
                        {: g, z/ S! v# E* ~+ k
                          value++;7 r# }; L) O5 `& c* O8 _2 H0 ]
                        }                        
" z/ B( a. A) F, A& v. |7 B6 }" O                        if(DIR==0), N% g/ g  y! Z
                        {
! w& ~" e" i* m( R% r9 }& y4 |                          value--;
' z2 d3 v6 `8 y. d# X                        }
6 K# ~- @$ }3 C+ M: Y7 @0 b                                % s" n$ a: D' R$ H
                }
' I5 e; x4 o) x6 @' s: i
( ~$ l" T6 Q  H" G                if(value==1000)
' m- ]/ Q% R2 [                {. S& H, ~4 g1 P5 I; m% I
                  DIR=0;5 z# s# G0 I8 U% T% H" Y
                }
* W) [' z( c: r. e0 U$ ^9 y8 M                if(value==0)
& V) G+ e1 w7 }                {7 T3 R* T2 d4 H) J; O8 Z
                  DIR=1;
( V5 O$ O7 V" L- |                }        
+ [7 s7 R9 [8 h1 T8 x, d                                
: P- D/ E, Q0 a) ?1 F$ Y2 O                if(timer1>1000)  //PWM周期为1000*1us, v/ Y. M  d5 k. X
                {
1 z+ |) v) q/ V; M2 i9 k                        timer1=0;/ H: k1 N5 f. J' t- H- O: f- ?. [
                }
- |3 B- G2 y& e! F                if(timer1 4 [2 q, K3 k: j
                {. j# E# y. i! G+ D. M% B
                        PWM=1;
8 K, P+ o3 H9 Y6 N, j" ]                }: e/ `1 s. r( g* P/ `  w% b
                else4 G1 U% W) E% ?- }
                {" O9 U- T: i, _' L+ J6 |
                        PWM=0;
! ]* M  b: ~' ?$ a3 w                }                ' \7 |  R  z* x$ H# L5 w
        }               
( b. S0 f$ [2 U: Z7 U}3 D2 @4 w8 ~2 o6 b
/******************************************************************************** R( t/ S# ^( W) n, n: C6 m) V! @
* 函 数 名       : Time18 H! B, V8 }2 }: m8 ?* [0 n5 |
* 函数功能                 : 定时器1的中断函数
+ b2 ?6 A3 H0 N* 输    入       : 无
# k4 m8 s' k# N2 t3 \* 输    出       : 无
) O( z4 O, W" U! p3 v*******************************************************************************/; v9 L1 e* d; [6 V
void Time1(void) interrupt 3    //3 为定时器1的中断号  1 定时器0的中断号 0 外部中断1 2 外部中断2  4 串口中断
' M  l6 b# \, G: G+ T) T{
& a9 \* N# T* \. I% X2 Z! `        TH1 = 0xFF; ! N$ j* p' o* k2 [5 g+ r
        TL1 = 0xff;   //1us3 P; o) o& y. E8 W
        timer1++;
+ ^3 M# d" |9 }/ |8 b# p3 ~5 n    count++;% U9 e9 L2 n1 @, i$ ]! q
}5 C3 g. r+ q" a) q

该用户从未签到

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-6-13 04:54 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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