// 实验二十四8255控制交通灯实验
#include "reg51.h"
#define mode 0x80 // 方式0,PA,PC,PB输出
xdata unsigned char PortA _at_ 0xA000 ; // Port A
xdata unsigned char PortB _at_ 0xA001 ; // Port B
xdata unsigned char PortC _at_ 0xA002 ; // Port C
xdata unsigned char CAddr _at_ 0xA003 ; // 控制字地址
void Delay(unsigned char CNT)
{
unsigned int I;
while ((CNT > 0)) {
for (I=0; (I < 10000) ; I++) ;
CNT--;
}
}
void main()
{
unsigned char I;
CAddr = mode;
PortA = 0x09; // 南北, 东西均红灯Delay(20);
while (1) {
PortA = 0x21; // 南北红灯, 东西绿灯
Delay(20);
PortA = 0x01; // 南北红灯, 东西黄灯闪
for (I=0; I < 9; I++) {
Delay(2);
PortA = 0x01;
Delay(2);
PortA = 0x11;
}