目录

应广单片机PFS123按键中断控制数码管显示视频

led数码管图片

应广单片机PFS123按键中断控制数码管显示代码

应广科技网址,开发工具,PMS123规格书:http://www.padauk.com.tw/cn/product/show.aspx?num=145&kw=PFS123


应广单片机PFS123按键中断控制数码管显示视频

led共阴极数码管显示

led数码管图片

应广单片机PFS123按键中断控制数码管显示代码

#include "extern.h"
COM1    equ pc.3
COM2    equ pa.7
COM3    equ pa.6
jia     equ pb.4
jian    equ pb.6
byte    m;
byte    num_bit;
byte    num_ten;
word    reload_T16;
bit     j;
word    counter=0;void  Look_Table(void)
{A += 1;_Pcadd{ret      0x3f;//0ret     0x06;//1ret     0x5b;//2ret     0x4f;//3ret     0x66;//4ret     0x6d;//5ret     0x7d;//6ret     0x07;//7ret     0x7f;//8ret     0x6f;//9}
}void   T16_Time(void)
{$ T16M SYSCLK,/4,bit12;  //T16的时钟源选择,内部的时钟分频器,中断源选择(当选择位由低到高或者由高到低时,发生中断事件);//时钟源选择可以选择STOP, SYSCLK, PA4_F, IHRC, EOSC, ILRC, PA0_F;分频器可选择/1, /4, /16, /64//中断源可选择BIT8, BIT9, BIT10, BIT11, BIT12, BIT13, BIT14, BIT15reload_T16 = 4096-500;  //每次进中断为1ms;//计算公式为 [1/(时钟源/分频器)]*(中断源-reload_T16)=[1/(4M/4)]*(2^12-(4096-1000))=1000us=1msstt16 reload_T16;     //设定计数器初始值reload_T16,当计数器累加超过设定中断源时产生中断;$ INTEN T16;         //中断允许寄存器,启用从T16的溢出中断;1:启用,0:停用。$ INTRQ T16;         //中断请求寄存器,此位是由硬件置位并由软件清零;1:请求,0:不请求。//注:INTEN,INTRQ没有初始值,所以要使用中断前,一定要根据需要设定数据。即使INTEN为0,INTRQ还是会被中断发生源触发。$ INTEGS BIT_R;          //T16中断边缘选择,上升缘请求中断为BIT_R,下降缘请求中断为BIT_F;默认为上升缘请求。INTEN.T16 = 1;            //开T16中断INTRQ.T16 = 0;          //清零INTRQ寄存器。ENGINT;                    //打开全局中断
}void   xianshi(void)
{       A = num_ten;Look_Table();m = A;PA = m & 0x01;   //a->    pa0=1,其他的关PB = m & 0x00;PC = m & 0x00;$ COM1 out,low;                       //c3为共阴极=0,a->f流水灯$ COM2 out,high;$ COM3 out,high;.delay 1000;PA = (m<<3) & 0x10;   //b->    a4=1,其他的关PB = m & 0x00;PC = m & 0x00;$ COM1 out,low;                        //c3为共阴极=0,a->f流水灯$ COM2 out,high;$ COM3 out,high;.delay 1000;PA = (m<<1 )& 0x08;   //c     a3=1,其他的关PB = m & 0x00;PC = m & 0x00;$ COM1 out,low;                        //c3为共阴极=0,a->f流水灯$ COM2 out,high;$ COM3 out,high;.delay 1000;PA = m & 0x00;  //d     c0=1,其他的关PB = m & 0x00;PC = (m>>3) & 0x01;$ COM1 out,low;                     //c3为共阴极=0,a->f流水灯$ COM2 out,high;$ COM3 out,high;.delay 1000;PA = m & 0x00;  //e     c1=1,其他的关PB = m & 0x00;PC = (m>>3) & 0x02;$ COM1 out,low;                     //c3为共阴极=0,a->f流水灯$ COM2 out,high;$ COM3 out,high;.delay 1000;PA = m & 0x00;  //f     b0=1,其他的关PB = (m>>5) & 0x01;PC = m & 0x00;$ COM1 out,low;                     //c3为共阴极=0,a->f流水灯$ COM2 out,high;$ COM3 out,high;.delay 1000;PA = (m>>2) & 0x10;                       //g     a6=0,a4=1,其他的关PB = m & 0x00;PC = m & 0x00;$ COM1 out,high;$ COM2 out,high;$ COM3 out,low;                       //a6为共阴极=0,开g数码管.delay 1000;/*个位分两部分*/A = num_bit;Look_Table();m = A;PA = m & 0x01;  //a->    pa0=1,其他的关PB = m & 0x00;PC = m & 0x00;$ COM1 out,high;                      //c3为共阴极=0,a->f流水灯$ COM2 out,low;$ COM3 out,high;.delay 1000;PA = (m<<3) & 0x10;    //b->    a4=1,其他的关PB = m & 0x00;PC = m & 0x00;$ COM1 out,high;                       //c3为共阴极=0,a->f流水灯$ COM2 out,low;$ COM3 out,high;.delay 1000;PA = (m<<1 )& 0x08;    //c     a3=1,其他的关PB = m & 0x00;PC = m & 0x00;$ COM1 out,high;                       //c3为共阴极=0,a->f流水灯$ COM2 out,low;$ COM3 out,high;.delay 1000;PA = m & 0x00;   //d     c0=1,其他的关PB = m & 0x00;PC = (m>>3) & 0x01;$ COM1 out,high;                        //c3为共阴极=0,a->f流水灯$ COM2 out,low;$ COM3 out,high;.delay 1000;PA = m & 0x00;   //e     c1=1,其他的关PB = m & 0x00;PC = (m>>3) & 0x02;$ COM1 out,high;                        //c3为共阴极=0,a->f流水灯$ COM2 out,low;$ COM3 out,high;.delay 1000;PA = m & 0x00;   //f     b0=1,其他的关PB = (m>>5) & 0x01;PC = m & 0x00;$ COM1 out,high;                        //c3为共阴极=0,a->f流水灯$ COM2 out,low;$ COM3 out,high;.delay 1000;PA = (m>>3) & 0x08;                        //g     a6=0,a3=1,其他的关PB = m & 0x00;PC = m & 0x00;$ COM1 out,high;$ COM2 out,high;$ COM3 out,low;                       //a6为共阴极=0,开g数码管.delay 1000;
}void   anjian(void)
{   if(j)//1ms 中断扫描{j=0;if(jia==0){if(jia==0){if(counter<1500) counter++;//jishiif(counter==20)//长按{if(num_bit<10)    {num_bit++;}if(num_bit==10) {num_bit=0;num_ten++;if(num_ten>=10)num_ten=0;}counter=0;}}else{if(counter>4&&counter<20)//xiaodou duanan{if(num_bit<10)    {num_bit++;} if(num_bit==10)    {num_bit=0;num_ten++;if(num_ten>=10)num_ten=0;}}counter=0;}}if(jian==0){if(jian==0){if(counter<1500) counter++;//jishiif(counter==20)//长按{if((num_bit>0||num_bit==0 )&& num_ten==0){if(!num_bit){num_bit=9;num_ten=9;}else{num_bit--;}}else if(num_ten>0 && (num_bit>0||num_bit==0 )){if(!num_bit){num_ten--;num_bit=9;}else{num_bit--;}}counter =0;}}else{if(counter>4&&counter<20)//xiaodou duanan{if((num_bit>0||num_bit==0 )&& num_ten==0){if(!num_bit){num_bit=9;num_ten=9;}else{num_bit--;}}else if(num_ten>0 && (num_bit>0||num_bit==0 )){if(!num_bit){num_ten--;num_bit=9;}else{num_bit--;}}}counter=0;}}}}void   FPPA0 (void)
{.ADJUST_IC SYSCLK=IHRC/8, IHRC=16MHz, VDD=5V;num_ten = 2;num_bit = 5;PAC = 0b1101_1001;PBC = 0b0000_0001;PCC = 0B0000_1011;PA = 0b0000_0000;PB = 0b0000_0000;PC = 0b0000_0000;$     jia    in,pull;                //输入上拉$  jian   in,pull;                //输入上拉T16_Time();.delay 10000;while (1){    xianshi();anjian();}}void   Interrupt (void)
{pushaf;        //进栈if (Intrq.T16){Intrq.T16=0;stt16 reload_T16;    j=1;}popaf;        //出栈
}

应广科技网址,开发工具,PMS123规格书:http://www.padauk.com.tw/cn/product/show.aspx?num=145&kw=PFS123

QQ学习交流群群号:439065406

应广单片机PFS123按键中断控制数码管显示例程相关推荐

  1. 蓝桥杯单片机数码管动态显示_关于蓝桥杯训练小程序 中断控制数码管显示数字的左右移动...

    /******************************************************************************************** 利用数码管在 ...

  2. 单片机入门-矩阵键盘控制数码管显示

    任务简述:通过按下4X4矩阵键盘实现数码管对应显示数字 实现方式:通过行列分接法,可以节省使用单片机的I/O口,扫描矩阵键盘是否有按下,判断P2端口得到的值. protues 硬件系统 单片机晶振复位 ...

  3. 应广单片机-按键状态机(单击、双击、长按)

    在正常0.5s内无按键操作为启始按键扫描条件下,扫描按键将产生以下3种按键事件: 1.长按事件:任何1次出现的长按操作都属于长按事件 2.单击事件:1次短按操作后,间隔2s内没有短按操作 3.双击事件 ...

  4. 应广单片机休眠和按键唤醒

    对应电池供电的产品,在不使用的时候,单片机和外设都应该进入休眠状态,用于减少对电池电量消耗.在使用的时候又能够通过按键,或是其他信号唤醒系统,然后进入正常工作状态.在电压V3.3V的情况下,应广单片机 ...

  5. 应广单片机定时器中断配置

    应广单片机主要应用于消费电子,资源有限,只有一个16bit定时器,因此用好T16定时器就非常关键了.可以说是整个单片机系统的核心配置 不说那么多了,直接上代码. BIT     LED_G       ...

  6. 51单片机按键控制数码管显示0-9

    实验题目:使用51单片机设计两个按键控制数码管显示0-9,当K1按下减1,当K2按下加1. 理解程序可参考我的另外两个文章; 51单片机数码管显示0-9_学习笔记吧的博客-CSDN博客 51单片机独立 ...

  7. C51单片机——多个按键中断控制实现

    C51单片机--多个按键中断控制实现 1.实现代码 /* * 2018-10-22 */ #include<STC15F2K60S2.h> #define uchar unsigned c ...

  8. 应广单片机_呼吸灯理解

    计数器的介绍 对于应广单片机来说,它提供了3种计数器,分别为 TM2\TM3\T16 其中对于TM2\TM3来说,是属于PWM计数器,用法是简单的,但是要求比较高,需要对应的引脚来达到它的要求 从芯片 ...

  9. PMS150C应广单片机开发案例

    PMS150C应广单片机开发案例 应广单片机价格美丽,性价比高,mini-c好用,适用于消费电子开发.但是案例demo太少了,为了方便大家能够快速入门.这里贴出了一份经典PMS150C的点灯程序代码. ...

最新文章

  1. 人脸真伪验证与识别:ICCV2019论文解析
  2. Unity VS Unreal,游戏开发该如何选择引擎?
  3. VUEX中关于 mapActions, mapMutations使用解析
  4. 前端开发 常用用的静态服务器
  5. 基于swiper和Less的小米商城
  6. 程序员,别逼自己学 AI 了,掌握正确的方法,开发水平暴增!
  7. glide从入门到精通使用
  8. 本地函数定义是非法的_使用函数计算三步实现深度学习 AI 推理在线服务
  9. 计算机网络 中国大学MOOC 哈尔滨工业大学 习题答案
  10. JavaScript的三种弹窗
  11. 8086CPU标志位
  12. 深度学习入门:基于Python的理论与实现——第一章Python入门
  13. Microsoft Visual C++ 14.0 is required.
  14. 计算机类ei和sci期刊,请教大家计算机领域数据挖掘方面有哪些比较好中的EI期刊和SCI期刊 - 论文投稿 - 小木虫 - 学术 科研 互动社区...
  15. 前端页面局部(全局)刷新方法
  16. 大唐长安人杜环在两河流域, 耶路撒冷和北非的行程
  17. 从零实施ERP如何成功
  18. matlab基础语法
  19. javac -d . hello.java中的 -d .是什么作用?
  20. 可关注10只超跌次新小盘股

热门文章

  1. android关机闹钟慢一分钟问题
  2. 【学海】再看傅里叶变换和欧拉公式
  3. Cocos2d-x JSB 自己主动绑定bindings
  4. 数据库连接及数据库连接池
  5. java 内存 回收_java内存回收
  6. fgets函数的用法
  7. C语言的fgets() 与 gets()
  8. python特征选择relieff图像特征优选_python 3.x实现特征选择ReliefF算法
  9. 【NOI2015】【BZOJ4199】品酒大会
  10. iOS 正确设置状态栏 Style