📄 led.c
字号:
#include "pic16f62xa.h"
#include "pic.h"
#include "typedefine.h"
#include "extern.h"
bank1 uchar aloneD[4];
//段码0-9端口驱动.
void lightled0(void)
{
RA4 = 1;
PORTB &= 0b00000110;
}
void lightled1(void)
{
RA4 = 1;
PORTB &= 0b11100111;
PORTB |= 0b11100001;
}
void lightled2(void)
{
RA4 = 0;
PORTB &= 0b10010110;
PORTB |= 0b10010000;
}
void lightled3(void)
{
RA4 = 0;
PORTB &= 0b11000110;
PORTB |= 0b11000000;
}
void lightled4(void)
{
RA4 = 0;
PORTB &= 0b01100111;
PORTB |= 0b01100001;
}
void lightled5(void)
{
RA4 = 0;
PORTB &= 0b01001110;
PORTB |= 0b01001000;
}
void lightled6(void)
{
RA4 = 0;
PORTB &= 0b00001110;
PORTB |= 0b00001000;
}
void lightled7(void)
{
RA4 = 1;
PORTB &= 0b11100110;
PORTB |= 0b11100000;
}
void lightled8(void)
{
RA4 = 0;
PORTB &= 0b00000110;
}
void lightled9(void)
{
RA4 = 0;
PORTB &= 0b01000110;
PORTB |= 0b01000000;
}
//数码管初始化.
void ledinit(void)
{
TRISA &= 0b11100000;
NOP();
PORTA &= 0b11100000;
TRISB &= 0b00000110;
NOP();
PORTB &= 0b00000110;
//连接
pcled[0] = lightled0;
pcled[1] = lightled1;
pcled[2] = lightled2;
pcled[3] = lightled3;
pcled[4] = lightled4;
pcled[5] = lightled5;
pcled[6] = lightled6;
pcled[7] = lightled7;
pcled[8] = lightled8;
pcled[9] = lightled9;
}//void ledinit(void)
//10进制显示
void CalculateSub(uint Digit,uchar *p_aloneD)
{
*p_aloneD = (char)(Digit/1000);
Digit -= *p_aloneD++ * 1000;
*p_aloneD = (char)(Digit/100);
Digit -= *p_aloneD++ * 100;
*p_aloneD = (char)(Digit/10);
Digit -= *p_aloneD++ * 10;
*p_aloneD = (char)Digit;
p_aloneD = 0;
}//void CalculateSub(int Digit,char *p_aloneD)
//数码管刷新 64ms once.
void sub2(void)
{
bank2 static uint ShowDigit;
NOP();
ShowDigit = (uint)LedShowLink; // 0x4d2;//
CalculateSub(ShowDigit,aloneD);
NOP();
}//void sub2(void)
//数码管位码控制
void subled(void)
{
bank2 static char ledbitcou = 0b00000000;
// static char coui ; //用作数组aloneD[]下标.
char bytebit=0,byteT=0;
if(ledbitcou == 0)
{
bytebit = 0b00000001;
}else if(ledbitcou == 1)
{
bytebit = 0b00000010;
}else if(ledbitcou == 2)
{
bytebit = 0b00000100;
}else if(ledbitcou == 3)
{
bytebit = 0b00001000;
}
PORTA &= 0b11110000;
PORTA |= bytebit;
byteT = aloneD[ledbitcou];
(*pcled[byteT])(); //段码选择.
if(++ledbitcou == 4)
ledbitcou = 0;
}//void subled(void)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -