82C55控制交通灯

来源:互联网 发布:淘宝优惠券二合一平台 编辑:程序博客网 时间:2024/05/16 04:59

要求:

用STC89C52单片机扩展一片可编程并行I/O口82C55,用8255做输出口,控制十二个发光二极管亮灭,模拟交通灯的管理。初始状态:红灯全亮,黄、绿灯灭。第一状态:1,3路口的绿灯全亮,2、4路口红灯亮。第二状态:1,3路口绿灯灭,黄灯开始闪烁。第三状态:1,3路口红灯亮,2,4路口绿灯亮。第四状态:2,4路口绿灯熄灭,而黄灯闪烁。

C语言:

#include <reg52.h>#define uint unsigned int #define uchar unsigned char#define XBYTE ((uchar volatile xdata *) 0)#define COM8255 0XFF7F#define PORTC8255   0XFF7Evoid time(unsigned int _time){    uchar ucCounter,i;    //for(ucCounter=0;ucCounter<_time;ucCounter++);    for(ucCounter=0;ucCounter<110;ucCounter++)    for(i=0;i<_time;i++);}void main(){    while(1)    {    uint i;    XBYTE[COM8255]=0X80;    XBYTE[PORTC8255]=0Xc6;    time(200);    XBYTE[PORTC8255]=0Xc5;    time(200);    for(i=0;i<8;i++)    {        XBYTE[PORTC8255]=0XC3;     time(200);        XBYTE[PORTC8255]=0XC7;    time(200);    }    XBYTE[PORTC8255]=0Xa6;    time(200);    time(200);    for(i=0;i<8;i++)    {        XBYTE[PORTC8255]=0X66;        time(200);        XBYTE[PORTC8255]=0XE6;        time(200);    }    }}

汇编语言:

ORG 0000HPORTC8255   EQU  0FF7EH     ;8255CCTRL8255    EQU  0FF7FH     ;8255NUMB        EQU  08HMAIN:  MOV A,#80H           ;A,B,C口方式0输出       MOV DPTR,#CTRL8255          MOVX @DPTR,A       MOV A,#0C6H          ;红灯全亮,绿灯黄灯全灭       MOV DPTR,#PORTC8255       MOVX @DPTR,A       LCALL DL11START: MOV A,#0C5H          ;1,3路口绿灯全亮,2,4路口红灯亮       MOVX @DPTR,A       LCALL DL11       LCALL DL11       MOV  R2,#NUMBLOOP1: MOV A,#0C3H          ;1,3路口黄灯亮       MOVX @DPTR,A       LCALL DL12       MOV A,#0C7H          ;1,3路口黄灯灭       MOVX  @DPTR,A       LCALL DL12       DJNZ R2,LOOP1       MOV A,#0A6H          ;1,3路口红灯亮,2,4路口绿灯亮       MOVX @DPTR,A       LCALL DL11       LCALL DL11YELLO24:MOV  R2,#NUMBLOOP2:  ANL A,#66H          ;2,4路口黄灯亮        MOVX @DPTR,A        LCALL DL12                  MOV  A,#0E6H        ;2,4路口黄灯灭        MOVX @DPTR,A        LCALL DL12        DJNZ R2,LOOP2        LJMP START;   DL11:        MOV R5,#5HDL2:    MOV R7,#0FFHDL3:    MOV R6,#0FFHDL4:    DJNZ R6,DL4        DJNZ R7,DL3        DJNZ R5,DL2        RETDL12:        MOV R7,#0C0HDL5:    MOV R6,#0FFHDL6:    DJNZ R6,DL6        DJNZ R7,DL5        RET        END

仿真效果图:
这里写图片描述

原创粉丝点击