长沙理工自己的实验程序
源代码在线查看: 训练项目四:扩展io口的使用._c
/****************************************************************************
** File Name: 扩展I/O口的使用
** Createed By: Wangchangsong
** Create Date: 07/26/2008
** Version: 1.0
** Descriptions: led display
**
**---------------------------------------------------------------------------
** Modified By:
** Modified Date:
** Version:
** Descriptions:
**
****************************************************************************/
#include
#define CON8255 0x8003
/* 宏定义,定义8255的地址 */
#define A8255 0x8000
/* 宏定义,定义8255A口地址 */
/****************************************************************************
** Function Name: init
** Descriptions: initialization
** Input Parameters: viod
** Output parameters: void
** Returned Value: void
**---------------------------------------------------------------------------
****************************************************************************/
void init(void) /* 初始化 */
{
MCUCR=MCUCR|0x80; /*允许外部存储器扩展,允许使用8255*/
XMCRB=0x80; /* 外部存储总线保持允许 */
w8255con(0x80); /*A口工作在模式0,A口作输出 */
}
/****************************************************************************
** Function Name: w8255con
** Descriptions:
** Input Parameters: ctrl
** Output parameters: void
** Returned Value: void
**---------------------------------------------------------------------------
****************************************************************************/
void w8255con(unsigned char ctrl)
{
unsigned char *p = (unsigned char *)(CON8255); /*指针指向控制总线 */
*p=ctrl;
}
/****************************************************************************
** Function Name: w8255a
** Descriptions:
** Input Parameters: value
** Output parameters: void
** Returned Value: void
**---------------------------------------------------------------------------
****************************************************************************/
void w8255a(unsigned char value)
{
unsigned char *p = (unsigned char *)(A8255); /* 指针指向8255的A口 */
*p=value;
}
/****************************************************************************
** Function Name: delay_1ms
** Descriptions: delay time
** Input Parameters: void
** Output parameters: void
** Returned Value: void
**---------------------------------------------------------------------------
****************************************************************************/
void delay_1ms(void) /* 延时 */
{
unsigned int i;
for(i = 1;i < 2260;i++);
}
/****************************************************************************
** Function Name: delay_nms
** Descriptions: delay time
** Input Parameters: uiTime
** Output parameters: void
** Returned Value: void
**---------------------------------------------------------------------------
****************************************************************************/
void delay_nms(unsigned int uiTime) /* 延时 */
{
unsigned int i = 0;
while(i < uiTime)
{delay_1ms();
i++;
}
}
/****************************************************************************
** Function Name: main
** Descriptions:
** Input Parameters: void
** Output parameters: void
** Returned Value: void
**---------------------------------------------------------------------------
****************************************************************************/
void main(void)
{
init();
while(1)
{
w8255a(0xfe); /* 给A口赋值 */
delay_nms(80);
w8255a(0xfd);
delay_nms(80);
w8255a(0xfb);
delay_nms(80);
w8255a(0xf7);
delay_nms(80);
w8255a(0xdf);
delay_nms(80);
w8255a(0xef);
delay_nms(80);
w8255a(0x7f);
delay_nms(80);
w8255a(0xbf);
delay_nms(80);
}
}
/****************************************************************************
END FILE
****************************************************************************/