📄 main.#3
字号:
//main.c
#include <E:\ProgramFiles\SiLabs\MCU\IDEfiles\C51\Inc\c8051F310.h>
#include <intrins.h>
#define NOPP _nop_();_nop_();_nop_();_nop_()
#define NOP NOPP;NOPP;NOPP
//------------------数据定义--------------------------------------------
//显示码
#include "led_code.c"
//char code led[10] = {0x14,0xD7,0x4C,0x45,0x87,0x25,0x24,0x57,0x04,0x05};
//显示缓冲区
char data num[3][4]= {
{'*'-32,'1'-32,'$'-32,'%'-32},
{'('-32,'4'-32,'#'-32,'&'-32},
{')'-32,'!'-32,'\"'-32,'\''-32}
};
//通信缓冲区
char data numBuff[3][4] = {0};
//74HC373使能信号
sbit cs373 = P3^4;
//数码管片选信号
char data select;
//***************
//------------------函数定义---------------------------------------------
//初始化函数
void init()
{
XBR0 = 0x02;
SPI0CFG = 0x00;
SPIEN = 1;
////////////////
ESPI0 = 1;
EA = 1;
EA = 1;
NOP;
NOP;
XBR1 = 0x40;
cs373 = 0;
}
//SPI中断函数
void spi_int() interrupt 6
{
static unsigned char BuffRowCount = 0;
static unsigned char BuffLineCount = 0;
if(_testbit_(SPIF))
{
numBuff[BuffRowCount][BuffLineCount] = SPI0DAT;
if(BuffLineCount==3)
{
BuffLineCount=0;
if(BuffRowCount==2)
{
for(BuffRowCount=0;BuffRowCount<3;BuffRowCount++)
for(BuffLineCount=0;BuffLineCount<4;BuffLineCount++)
num[BuffRowCount][BuffLineCount] =
numBuff[BuffRowCount][BuffLineCount]-32;
BuffRowCount=0;
BuffLineCount=0;
}
else BuffRowCount++;
}
else BuffLineCount++;
}
}
//延时函数
void delay(unsigned int delayor)
{
unsigned int i;
unsigned char j;
for(j=0;j<235;j++)
{
_nop_();_nop_();
_nop_();_nop_();
}
_nop_();
_nop_();
_nop_();
delayor--;
for(i=0;i<delayor;i++)
{
_nop_();
for(j=0;j<235;j++)
{
_nop_();_nop_();
_nop_();_nop_();
_nop_();_nop_();
_nop_();_nop_();
}
}
}
//主函数
main()
{
unsigned char i;
init();
select = 0xDD;
while(1)
{
for(i=0;i<4;i++)
{
P2 = char_code[num[0][i]];
cs373 = 1;
NOP;
cs373 = 0;
P2 = char_code[num[1][i]];
P1 = char_code[num[2][i]];
delay(5);
P0 = select;
select = _crol_(select,1);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -