200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 应广单片机PFS123按键中断控制数码管显示例程

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

时间:2023-01-31 08:39:05

相关推荐

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

目录

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

led数码管图片

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

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

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

led共阴极数码管显示

led数码管图片

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

#include"extern.h"COM1equpc.3COM2equpa.7COM3equpa.6jiaequ pb.4jianequ pb.6byte m;bytenum_bit;bytenum_ten;word reload_T16;bit j;word counter=0;voidLook_Table(void){A += 1;_Pcadd{ret0x3f;//0ret 0x06;//1ret0x5b;//2ret 0x4f;//3ret0x66;//4ret 0x6d;//5ret0x7d;//6ret 0x07;//7ret0x7f;//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;//打开全局中断}voidxianshi(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;//ca3=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;//dc0=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;//ec1=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;//fb0=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;//ga6=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;//ca3=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;//dc0=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;//ec1=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;//fb0=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;//ga6=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;}}}}voidFPPA0 (void){.ADJUST_ICSYSCLK=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();}}voidInterrupt (void){pushaf; //进栈if (Intrq.T16){Intrq.T16=0;stt16 reload_T16;j=1;}popaf; //出栈}

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

QQ学习交流群群号:439065406

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。