📄 main.c
字号:
/////PA口低八位用做D0~D7,高八位为控制线: A12~A7分别是CS,A1,WR,RST,A0,RD///
///操作8255///
#include "spce061a.h"
unsigned int b[4]={0x110e,0x110d,0x0b,0xc907}; //选行
unsigned int a[4]={0x00e0,0x00d0,0x00b0,0x0070}; //选列
unsigned int zi[16]={0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
main()
{
unsigned int ;
initial();
while(1)
{
*P_Watchdog_Clear=0x0001;
scan();
}
}
///////////////////////////////////////////////////////
void initial()
{
unsigned int i;
//初始化凌阳A端口///
*P_IOA_Dir=0xffff;
*P_IOA_Attrib=0xffff;
*P_IOA_Data=0xffff;
//复位8255///
*P_IOA_Data=0xffff;
for(i=0;i<1500;i++);
////8255端口初始化/// //PA15:NC,PA14:NC,PA13:CS,PA12:RST,PA11:A1,PA10:A0,PA9:WR,PA8:RD
*P_IOA_Data=0x1388; //8255端口送数PC口高四位当输入,PC低四位 PA,PB当输出/
///////////////////////RST:CS:A1:A0:WR:RD=001101
*P_IOA_Data|=0x1b00; ////wr=1
////扫描8255PC
*P_IOA_Data=0x11f0; //端口C送数 RST:CS:A1:A0:WR:RD=001001 PC口高四位保持为1,低四位输出为0
*P_IOA_Data|=0x1900; ////wr=1
////////////////////////////////////
/// *P_IOA_Data|=0xfdff; ///// RST:CS:A1:A0:WR:RD=111011
*P_IOA_Dir&=0xff0f;
*P_IOA_Attrib&=0xff0f;
*P_IOA_Data|=0x00ff; /////凌阳A端口设置为低八位为上拉输入
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void scan()
{
unsigned int i,x,y,z=0,j;
for(j=0;j<4;j++)
{
z|=b[j];
*P_IOA_Data=z; //端口C送数扫描第一行 RST:CS:A1:A0:WR:RD=001001 PC口高四位保持为1,低四位输出为0
*P_IOA_Data|=0x0200; ///wr=1
/////////////////
*P_IOA_Data=0xCAff; ///端口送数 PC口读数RST:CS:A1:A0:WR:RD=001010
y=*P_IOA_Data; ////
y&=0x00f0;
for(i=0;i<4;i++)
{
if(y==a[i])
{
x=zi[j*4+i];
display(x);
break;
}
}
z=0; ////wr=1
}
}
////////////////////////////////////////////////////
void display(unsigned int x)
{
*P_IOA_Data=0xc508; //端口送数
*P_IOA_Data|=0x0200; ////wr=1 //数码管段选择
x|=0xc100;
*P_IOA_Data=x; //端口送数
*P_IOA_Data|=0x0200;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -