应广单片机PFS123按键中断控制数码管显示例程
目录
应广单片机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按键中断控制数码管显示例程相关推荐
- 蓝桥杯单片机数码管动态显示_关于蓝桥杯训练小程序 中断控制数码管显示数字的左右移动...
/******************************************************************************************** 利用数码管在 ...
- 单片机入门-矩阵键盘控制数码管显示
任务简述:通过按下4X4矩阵键盘实现数码管对应显示数字 实现方式:通过行列分接法,可以节省使用单片机的I/O口,扫描矩阵键盘是否有按下,判断P2端口得到的值. protues 硬件系统 单片机晶振复位 ...
- 应广单片机-按键状态机(单击、双击、长按)
在正常0.5s内无按键操作为启始按键扫描条件下,扫描按键将产生以下3种按键事件: 1.长按事件:任何1次出现的长按操作都属于长按事件 2.单击事件:1次短按操作后,间隔2s内没有短按操作 3.双击事件 ...
- 应广单片机休眠和按键唤醒
对应电池供电的产品,在不使用的时候,单片机和外设都应该进入休眠状态,用于减少对电池电量消耗.在使用的时候又能够通过按键,或是其他信号唤醒系统,然后进入正常工作状态.在电压V3.3V的情况下,应广单片机 ...
- 应广单片机定时器中断配置
应广单片机主要应用于消费电子,资源有限,只有一个16bit定时器,因此用好T16定时器就非常关键了.可以说是整个单片机系统的核心配置 不说那么多了,直接上代码. BIT LED_G ...
- 51单片机按键控制数码管显示0-9
实验题目:使用51单片机设计两个按键控制数码管显示0-9,当K1按下减1,当K2按下加1. 理解程序可参考我的另外两个文章; 51单片机数码管显示0-9_学习笔记吧的博客-CSDN博客 51单片机独立 ...
- C51单片机——多个按键中断控制实现
C51单片机--多个按键中断控制实现 1.实现代码 /* * 2018-10-22 */ #include<STC15F2K60S2.h> #define uchar unsigned c ...
- 应广单片机_呼吸灯理解
计数器的介绍 对于应广单片机来说,它提供了3种计数器,分别为 TM2\TM3\T16 其中对于TM2\TM3来说,是属于PWM计数器,用法是简单的,但是要求比较高,需要对应的引脚来达到它的要求 从芯片 ...
- PMS150C应广单片机开发案例
PMS150C应广单片机开发案例 应广单片机价格美丽,性价比高,mini-c好用,适用于消费电子开发.但是案例demo太少了,为了方便大家能够快速入门.这里贴出了一份经典PMS150C的点灯程序代码. ...
最新文章
- 人脸真伪验证与识别:ICCV2019论文解析
- Unity VS Unreal,游戏开发该如何选择引擎?
- VUEX中关于 mapActions, mapMutations使用解析
- 前端开发 常用用的静态服务器
- 基于swiper和Less的小米商城
- 程序员,别逼自己学 AI 了,掌握正确的方法,开发水平暴增!
- glide从入门到精通使用
- 本地函数定义是非法的_使用函数计算三步实现深度学习 AI 推理在线服务
- 计算机网络 中国大学MOOC 哈尔滨工业大学 习题答案
- JavaScript的三种弹窗
- 8086CPU标志位
- 深度学习入门:基于Python的理论与实现——第一章Python入门
- Microsoft Visual C++ 14.0 is required.
- 计算机类ei和sci期刊,请教大家计算机领域数据挖掘方面有哪些比较好中的EI期刊和SCI期刊 - 论文投稿 - 小木虫 - 学术 科研 互动社区...
- 前端页面局部(全局)刷新方法
- 大唐长安人杜环在两河流域, 耶路撒冷和北非的行程
- 从零实施ERP如何成功
- matlab基础语法
- javac -d . hello.java中的 -d .是什么作用?
- 可关注10只超跌次新小盘股