📄 8255扩展.c
字号:
#include <iom128v.h>
#define CON8255 0x8003
#define A8255 0x8000
#define B8255 0x8001
void init(void)
{
MCUCR=MCUCR|0x80;
XMCRB=0x80;
w8255con(0x80);
w8255con(0x82);
}
void w8255con(unsigned char ctrl)
{
unsigned char *p=(unsigned char *)(CON8255);
*p=ctrl;
}
void w8255a(unsigned char value)
{
unsigned char *p=(unsigned char *)(A8255);
*p=value;
}
r8255b(){
unsigned char dp;
unsigned char *p=(unsigned char *)(B8255);
dp=*p;
return dp;
}
void delay_1ms(void)
{ unsigned int i;
for(i=1;i<2286;i++);
}
void delay_nms(unsigned int n)
{ unsigned int i=0;
while(i<n)
{delay_1ms();
i++;
}
}
void main(void)
{ init();
while(1){
if((r8255b()&0x01)==0)
{w8255a(0xfe);
delay_nms(50);
w8255a(0xfd);
delay_nms(50);
w8255a(0xfb);
delay_nms(50);
w8255a(0xf7);
delay_nms(50);
w8255a(0xef);
delay_nms(50);
w8255a(0xdf);
delay_nms(50);
w8255a(0xbf);
delay_nms(50);
w8255a(0x7f);
delay_nms(50);}
else
w8255a(0xff);
if((r8255b()&0x02)==0)
{w8255a(0x7f);
delay_nms(50);
w8255a(0x3f);
delay_nms(50);
w8255a(0x1f);
delay_nms(50);
w8255a(0x0f);
delay_nms(50);
w8255a(0x07);
delay_nms(50);
w8255a(0x03);
delay_nms(50);
w8255a(0x01);
delay_nms(50);
w8255a(0x00);
delay_nms(50);}
else
w8255a(0xff);
if((r8255b()&0x04)==0)
{w8255a(0x00);
delay_nms(20);
w8255a(0xff);
delay_nms(20);
w8255a(0x00);
delay_nms(20);
w8255a(0xff);
delay_nms(20);
w8255a(0x00);
delay_nms(20);
w8255a(0xff);
delay_nms(20);}
else
w8255a(0xff);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -