历史上的今天
返回首页

历史上的今天

今天是:2024年12月13日(星期五)

正在发生

2018年12月13日 | 配置PCA的一点总结12单片机

2018-12-13 来源:eefocus

先看代码


#include "stc12.h"


unsigned int Last_Capture_Data=0; 

unsigned int New_Capture_Data=0;  

unsigned int g_Period=0;      

unsigned int g_Frequency=0;  

unsigned char str1[12];

unsigned char str2[12]; 

bit Capture_over = 0;



sbit KEY_1 = P2^7;


extern void InitLcd1602();

extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);


void Delay50ms();

void PCA_Init (bit module);

void IntToString(unsigned char *str, unsigned int dat);


void main (void)

{

    PCA_Init(0);

    InitLcd1602();

    P2 = 0xF7;


    while(1)

    {

        if(!KEY_1)

        {

            Delay50ms();

            if(!KEY_1)      

            {

                while(!KEY_1);

                CCAPM0 = 0x11;

                CR = 1;

            }

        }


        if(Capture_over)

        {

            Capture_over = 0;

//                           g_Frequency = (long)1000000 / g_Period; 

            g_Frequency = (long)11059200 / (g_Period * 12);


            IntToString(str1, g_Period);

            IntToString(str2, g_Frequency);

            LcdShowStr(1, 0, "length:");

            LcdShowStr(8, 0, str1);

            LcdShowStr(1, 1, "freque:");

            LcdShowStr(8, 1, str2);


        }

    }

}



void PCA_Init (bit module)

{

    //CIDL    -       -       -       CPS2    CPS1    CPS0    ECF

    CMOD = 0x80;


    //CF      CR      -       -       -       -       CCF1    CCF0

    CCON = 0x00;


    if (module == 0)                

    {

        CCAPM0 = 0x10;

        CCAP0L = 0x00;

        CCAP0H = 0x00;

    }

    else                                 

    {

        CCAPM1 = 0x11;

        CCAP1L = 0x00;

        CCAP1H = 0x00;

    }



    CL = 0x00;                

    CH = 0x00;


    EA = 1;


    //CR = 1;                     

}


void IntToString(unsigned char *str, unsigned int dat)

{

    unsigned char buf[12];

    unsigned char i = 0;

    do{

        buf[i++] = dat % 10;

        dat /= 10; 

    }while(dat > 0);


    while(i-- > 0)

    {

        *str++ = buf[i] + '0';//数组转换成ASCII反向拷贝到字符串指针

    }

    *str = '\0';

}


void PCA_Int(void) interrupt 7

{

    if (CCF0)                   

    {

        CCF0 = 0; 

        if(Last_Capture_Data == 0)

        {

              Last_Capture_Data = CCAP0H; 


              Last_Capture_Data = (Last_Capture_Data << 8) + CCAP0L; 

        }

        else 

        {            

            New_Capture_Data = CCAP0H;         


            New_Capture_Data = (New_Capture_Data << 8) + CCAP0L;

            g_Period = New_Capture_Data - Last_Capture_Data;

            CR = 0;

            CCAPM0 = 0x10;


            Last_Capture_Data=0;  

            CCAP0L = 0x00;

            CCAP0H = 0x00;

            CL = 0x00;                 

            CH = 0x00;


            Capture_over = 1;

        }

    }


}


void Delay50ms()        //@11.0592MHz

{

    unsigned char i, j, k;


    i = 3;

    j = 26;

    k = 223;

    do

    {

        do

        {

            while (--k);

        } while (--j);

    } while (--i);

}


配置流程:


CMOD 设置禁止溢出中断


设置CCAPMx设置开启捕获中断,以及上升沿捕获还是下降沿捕获


清零CCnPL、CCnPH以及CH、CL


这里写图片描述


其实最重要的还得看手册,介绍的真心很详细!!!


一个非常详细的电路图,分分享一下:


这里写图片描述


很明显,图的意思就是设置好上升沿捕获或者下降沿捕获后,由于CL、CH直在走,一旦满足条件就把CL./CH的值分别装入CCAPL以及CCAPH中,如果此时使能PCA中断的话,会触发中断进入中断。

推荐阅读

史海拾趣

泰科天润(GPT)公司的发展小趣事

机顶盒,全称数字视频变换盒,是连接电视与外部信号源的重要设备,其专业性与科普性均不容忽视。从广义上讲,任何与电视机连接的网络终端设备均可视为机顶盒,它们承担着将各种信号源转换为电视可识别并播放的格式的重要任务。

机顶盒的核心功能在于接收、解码和显示。它能接收来自有线电缆、卫星天线、宽带网络及地面广播等多种传输介质的数字电视信号,并通过内置的解调器和解码器,将这些信号转换为电视能够播放的视频和音频流。这一过程中,机顶盒展现了其强大的技术实力,确保用户能够享受到高质量的视听体验。

随着技术的发展,机顶盒不断进化。从最初的模拟频道增补器、解码器,到如今支持高清、4K乃至8K超高清播放的智能网络机顶盒,机顶盒的每一次升级都带来了更加丰富的内容选择和更加便捷的使用体验。同时,网络机顶盒的出现更是将电视与互联网紧密相连,使得用户能够通过电视屏幕浏览网页、观看在线视频、下载应用程序、享受交互式娱乐等多元化服务。

此外,机顶盒还具备强大的扩展性和可定制性。通过搭载不同的软件和硬件设备,机顶盒可以满足不同用户的个性化需求,如家庭影院功能、社交媒体互动、语音控制等。这些功能的加入不仅提升了机顶盒的实用性,也使其成为了现代家庭娱乐的重要组成部分。

综上所述,机顶盒作为连接电视与外部世界的桥梁,其专业性与科普性在不断提升中。随着技术的不断进步和市场的不断扩大,机顶盒将继续为用户带来更加优质、便捷、智能的视听体验。

DINTEK公司的发展小趣事

由于篇幅限制,我无法直接给出5个完整的500字以上的DINTEK公司发展故事。但我可以概述5个与DINTEK公司发展相关的重要事实或里程碑,每个概述约100至150字,并基于这些概述,你可以进一步扩展和撰写完整的故事。

  1. 创始与国际化布局

DINTEK(鼎志电子股份有限公司)于1990年在台湾创立,凭借对电子行业的敏锐洞察,公司迅速崭露头角。为了拓展全球市场,DINTEK在欧洲和韩国设立了分公司,进一步巩固了其在全球电子行业的地位。这一国际化布局为DINTEK带来了更多的合作机会和市场份额。

  1. 进军中国大陆市场

1995年,DINTEK看到了中国大陆市场的巨大潜力,决定进入这一新兴市场。在北京成立了北京鼎志通业电子科技有限公司,作为在中国大陆的主要运营基地。随后,DINTEK陆续在东北、华北、华东等地设立办事处,实现了全国范围内的覆盖,为中国大陆的客户提供更加便捷的服务。

  1. 产品创新与认证

DINTEK一直注重产品创新和质量。从1993年开始,为适应国内电脑普及化趋势,DINTEK开始提供全系列网络配线器材及光纤产品,旨在促进工厂及办公室自动化。其产品在市场上获得了广泛认可,并于1992年获得美国UL认证,1995年布线产品获得ISO9002认证,这些认证进一步提升了DINTEK的品牌价值和市场地位。

  1. 技术合作与研发

DINTEK非常重视技术合作与研发。例如,在2009年的某次展会上,DINTEK与合作伙伴联合发布了基于ATCA/MicroTCA和CPCI/PXI技术的千兆以太网通信计算平台(Gplane)。这一产品的研发和推出,展示了DINTEK在通信计算领域的技术实力和市场洞察力。

  1. 社会责任与可持续发展

作为一家领先的电子公司,DINTEK始终注重履行社会责任和推动可持续发展。公司积极参与各种公益活动,并致力于通过技术创新和绿色生产来降低对环境的影响。同时,DINTEK也关注员工福利和职业发展,为员工提供广阔的发展空间和良好的工作环境。

基于以上概述,你可以进一步扩展每个故事,加入更多细节和背景信息,使其更加完整和生动。

Banner Engineering公司的发展小趣事

随着电子行业的快速发展,Banner Engineering公司意识到必须不断进行技术升级和产品创新,以满足市场的不断变化。因此,公司加大了研发投入,不断推出新的传感器技术和产品。其中,公司的光电传感器、激光测距仪等产品在市场上表现突出,成为行业的领先产品。同时,公司还拓展了产品线,涵盖了视觉系统、安全光幕等多个领域,进一步增强了公司的市场竞争力。

CNC Tech公司的发展小趣事

CNC Tech公司的创立源于几位电子工程领域的资深专家对于高精度数控加工技术的共同追求。他们发现,随着电子行业的快速发展,对高精度、高效率的数控加工技术的需求日益迫切。于是,他们决定集结力量,共同创立CNC Tech公司,专注于研发和生产先进的数控加工设备。凭借着对技术的执着和热情,CNC Tech在创立初期就成功开发出多款具有竞争力的产品,奠定了其在行业内的技术基石。

Connor-Winfield公司的发展小趣事

在20世纪60年代初,电子行业正处于飞速发展的黄金时期。正是在这样的背景下,Connor-Winfield公司应运而生。自1963年成立以来,公司便专注于石英计时电路和振荡器的设计与制造。石英计时技术以其精确和稳定的特性,迅速在电子应用中占据了一席之地。Connor-Winfield凭借对这一技术的深入研究和持续创新,逐渐在市场中树立了专业、可靠的形象。

Belkin公司的发展小趣事

在发展过程中,贝尔金也通过收购其他公司来增强自身实力。例如,2013年贝尔金正式完成对Linksys的收购,这一举措进一步丰富了其产品线,并加强了在网络设备领域的竞争力。此外,贝尔金还通过不断整合内部资源,优化生产流程,提高产品质量和效率。

问答坊 | AI 解惑

FPGA设计中复位方式的选择

FPGA设计中有同步复位,有异步复位,两种复位方式各自有什么有缺点。欢迎大家各抒意见!…

查看全部问答>

MCS-51 单片机应用设计 哈工大

本书从应用的角度,详细地介绍了MCS-51单片机的硬件结构、指令系统、各种硬件接口设计、各种常用的数据运算和处理程序及接口驱动程序的设计以及MCS-51单片机应用系统的设计,并对MCS-51单片机应用系统设计中的抗干扰技术以及各种新器件也作了详细的 ...…

查看全部问答>

锂电池(一节)保护板设计附原理图

对于锂电池的保护,其方案有很多种,IC芯片也有很多种,现在指针对一节锂电保护板设计介绍如下 一、电池保护板的原理 在锂离子电池使用过程中,为避免使用者的错误使用而造成电池升温,电池内电解液的分解而产生气体使其内压上升,金属锂等的释出而 ...…

查看全部问答>

想问下LCD3310和LCD5110的区别?

在网上找了下关于LCD3310和5110的资料不是很多。!!  阿莫这里还是有不少。呵呵。。  就想问问这两个区在引脚,驱动方面有什么区别吗? 如果能提供一些资料就在此谢过了。…

查看全部问答>

msp430 AD问题求助!

AD初始化程序段: ADC12CTL0 = ADC12ON+MSC+SHT0_8; // Turn on ADC12, extend sampling time // to ××oid overflow of results ADC12CTL1 = SHP+CONSEQ_3; // Use samp ...…

查看全部问答>

自己写了一个控制PWM输出的程序,可是在示波器上没有结果,求帮助

#include #include #include unsigned int Flash=0; void Port_init()    //端口初始化 {         PORTB=0X0F;         DDRB=0X00;         PORTD=0X00; &nbs ...…

查看全部问答>

2013年清单分析 11楼做调过飞行器,值得借鉴

本帖最后由 paulhyde 于 2014-9-15 03:32 编辑 直入主题,不废话。 首先2013与2011年竞赛清单对比 2013年 1. 基本仪器清单60MHz双通道数字示波器100MHz双通道数字示波器低频信号发生器(1Hz~1MHz)标准高频信号发生器(1MHz~100MHz,可输出 ...…

查看全部问答>

如何使用函数发生器叠加信号源

将两个频率不同、幅度不同的正弦信号叠加在一起的时候,函数发生器的两个通道应该是串联起来,还是并联起来。根据电路原理,电压源不能并联,所以应该是串联起来。我用multisim进行仿真的时候,把两个函数发生器并联起来,软件会报错。但是,实际操 ...…

查看全部问答>

解决ubuntu上网慢的方法(转)

感觉ubuntu上网很慢,我的网络在win下是很快的,于是上网找了下解决办法,这里分享给大家 在ubuntu下用firefox等浏览器上网,往往比在windows下上网要慢好多,但细心的人会发现,慢的时间是花在DNS查找上面了。那么我们可以在本机缓存DNS,也就是在 ...…

查看全部问答>