导航:首页 > 编程语言 > 82c55编程

82c55编程

发布时间:2022-04-13 10:28:06

1. C语言编程.8255流水灯设计这是8灯循环的编程。怎么修改才能有不同的闪烁呢请各位大侠帮帮忙。谢谢了。

出高电平要接上拉电阻。
单片机不要直接连8255,P0通过一个地址锁存器(74LS373)连8255.要用p0口先发控制字,连在8255的A0A1和CS上。
A1A0若为01、10、11,分别选中8255的B口C口和控制口。若通过锁存器连在)P0.1和P0.0,地址用16为表示,没用到的端口设为1,则FF7CH、FF7DH、FF7EH、FF7FH分别是8255的ABC及控制口的地址。具体看你的硬件电路了。所以没有固定的。
先给控制口发工作方式,如90H代表工作方式0。然后再与需要用到的口传输数据。不知道有没有说清楚。
你找一本单片机书好好看看,汇编并不难,看明白汇编,单片机就理解差不多了。

2. 82c55ac 是单片机嘛

不是单片机,他是一个单片机接口扩展芯片,单片机接口不够的时候用来扩展的。简单的说就是把单片机的其中一个8位口加以扩展,很多单片机的书都有介绍它怎么跟单片机连接的。它有A,B,C三个口,有3种工作方式,具体的方式要通过寄存器设置。我这有一份数据手册,是英文的,你要的话说一声,你也可以上网搜,应该有中文的。

3. 求8255C语言编程

========================
下面的代码是编译和运行方式如下:

#包括<stdio.h>
#包括<conio.h>

#定义PI 3.14。

无效的主要()
{
INT R = 0;
?整数k = 0;

?输出(“请输入一个半径为r:\ n”);
?scanf的(“%d”,&R);

输出(“\ n \ n请输入处理要求的\ n 1。计算面积?一个圆圈\ n 2计算一个圆的周长\ n 3。计算一个圆的周长和面积?一个圆\ n“);
scanf函数(“%d”,&K);

而(1)
?{
?开关(K)
?{
?案例1:
?printf(“请的面积?一个圆圈:0.2%F \ n”,PI * R * R);
?;
?案例2:
?输出(“圆的周长:%.2 F \?”,2 * PI * R);
?;
?案例3:
?printf(“请的面积?一个圆圈:0.2%F \ n”,PI * R * R);
?输出(“圆的周长:%.2 F \?”,2 * PI * R);
?;
?默认情况下:
?printf(“请误差要求!\ n”);
?;
?}

输出(“\ n \ n请输入处理要求的\ n 1。计算面积?一个圆圈\ n 2计算一个圆的周长\ n 3。计算一个圆的周长和面积?一个圆\ n“);
scanf函数(“%d”,&K);
?}

?的getch();
}

4. 8255编程

RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.
RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。
PB0~PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。
PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。'
A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.
当A0=0,A1=0时,PA口被选择;
当A0=0,A1=1时,PB口被选择;
当A0=1,A1=0时,PC口被选择;
当A0=1.A1=1时,控制寄存器被选择.

5. 82C55功能是什么

82C55功能:
82C55芯片是一种常规的用于编程I/O设备,为应用于微处理器设计,它有24个I/O插脚可以为2组12插脚独立编程,用于3种主要模式的操作。第一种模式,每一组12个I/O插脚可以编程设定4个插角作为输入货输出。剩下的四个针角,3个用于握手和中断控制信号,第三种模式,双向总线控制模式,使用8个针角用于总线控制,还有5个针角,从其他组中借用1个角用于握手。

6. 求8255的C语言编程举例(希望有图有程序)

/*本实验通过P0口的分时复用,用8255扩展IO口,用74hc53锁存低8位地址
8255的wr和rd直接与单片机的wr、rd连接,当做外部存储器来使用,8255
的PA口上接LCD1602的数据端口,本程序的功能是在LCD上显示字符串和自
定义的图形,已成功实现(板子是自己焊的) */
/*********************包含头文件*********************************/
#include <REGX51.H>
#include<absacc.h>
#define CLEARSCREEN LCD_write_command(0x01)
#define uint unsigned int
#define uchar unsigned char
/**************定义接口************************/
#define LCDIO P0
#define PA XBYTE[0xFF00]
#define PB XBYTE[0xFF01]
#define PC XBYTE[0xFF02]
#define COM XBYTE[0xFF03]
sbit LCD1602_RS=P1^0;
sbit LCD1602_RW=P1^1;
sbit LCD1602_EN=P1^2;
unsigned char table1[]={ 0x03,0x07,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x18,0x1E,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x07,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x10,0x18,0x1c,0x1E,0x1E,0x1E,0x1E,0x1E,
0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x00,
0x1f,0x1f,0x1f,0x1f,0x1f,0x0f,0x07,0x01,
0x1f,0x1f,0x1f,0x1f,0x1f,0x1c,0x18,0x00,
0x1c,0x18,0x10,0x00,0x00,0x00,0x00,0x00}; //心图案
/**************定义函数************************/
void LCD_write_command(unsigned char command); //写入指令函数
void LCD_write_dat(unsigned char dat); //写入数据函数
void LCD_set_xy( unsigned char x, unsigned char y ); //设置显示位置函数
void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat); //显示一个字符函数
void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s); //显示字符串函数
void LCD_init(void); //初始化函数
void delay_nms(unsigned int n); //延时函数
void delay();
void init_8255();
void write_8255PA(uchar ch);
/**************8255初始化******************************/
void init_8255()
{
COM=0x80;
}
/*************往PA口写数据*******************************/
void write_8255PA(uchar ch)
{
PA=ch;
}
/************初始化函数****************/
void LCD_init(void)
{
CLEARSCREEN; //clear screen
LCD_write_command(0x38); //set 8 bit data transmission mode
LCD_write_command(0x0d); //open display (enable lcd display)
LCD_write_command(0x80); //set lcd first display address
CLEARSCREEN; //clear screen
}

/**************写指令函数********************************/
void LCD_write_command(unsigned char command)
{
write_8255PA(command);
delay_nms(100);
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_EN=0;
LCD1602_EN=1;
delay_nms(10);
}
/***************************************************/
/****************写数据函数************************/
void LCD_write_dat(unsigned char dat)
{
write_8255PA(dat);
delay_nms(100);
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_EN=0;
delay_nms(1);
LCD1602_EN=1;
}
/****************************************************/
/***************设置显示位置**************************/
void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
if (y == 1)
address = 0x80 + x;
else
address =0xc0+ x;
LCD_write_command(address);
}
/***************************************************/
/****************显示一个字符**********************/
void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat)
{
LCD_set_xy( x, y );
LCD_write_dat(dat);
}
/**********************************************/
/***************显示字符串函数***************/
void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s)
{
LCD_set_xy( X, Y );
while (*s)
{
LCD_write_dat(*s);
s ++;
}
}
/***********************************************/
/********** 延时**********************/
void delay_nms(unsigned int n)
{
unsigned int i=0,j=0;
for (i=n;i>0;i--)
for (j=0;j<10;j++);
}
/**************************************/
void delay()
{ int i;
for(i=0;i<50;i++)
delay_nms(100);}
/***********主函数**************/
void main(void)
{
unsigned char i,j,k,tmp;
init_8255();
LCD_init();
delay_nms(100);
tmp=0x40;//设置CGRAM地址的格式字
k=0;
for(j=0;j<8;j++)
{
for(i=0;i<8;i++)
{
LCD_write_command(tmp+i); // 设置自定义字符的 CGRAM 地址
delay_nms(2);
LCD_write_dat(table1[k]); // 向CGRAM写入自定义字符表的数据
k++;
delay_nms(2);
}
tmp=tmp+8;
}
LCD_dsp_string(1,1,"LCD TEST ");//在第一行第一列显示"LCD TEST"
LCD_dsp_string(1,2,"SUCCESSFUL ");//在第二行第一列显示"SUCCESSFUL"
for (i=0;i<4;i++)
{
LCD_dsp_char( 12+i,1,i);//在第一行第12列位置显示心图案的上半部
delay_nms(1);
}
for (i=4;i<8;i++)
{
LCD_dsp_char(12+i-4,2,i);//在第二行第12列位置显示心图案的下半部
delay_nms(1);
}
do
{
LCD_write_command(0x08);
delay();
LCD_write_command(0x0c);
delay();
}while (1);
}

7. 可编程并行接口8255中C口的按位操作是如何实现的

1、首先用串口模块将一个从PC机发来的串行数据转换成并行数据存放到数据输出选择模块的DOUT口,至于这个八位数据是输入到控制寄存器还是从PA/PB/PC口输出,就由另一个输入输出逻辑判断模块来控制。

2、逻辑判断模块根据A0-A1,WR,RD,还有控制字来判断三个端口处于什么工作方式,并将数据发送(接收)至A口、B口、C口的缓冲区。

3、通过PA输出模块、PA输入模块、PB输出模块、PB输入模块、PC输出模块将缓存区中的数据根据不同的工作方式进行输入输出。

8个模块的作用:

1、串口通信模块(Rs232RefComp):由于8255端口众多,而fpga板载I/O口不够用,所以采用串口输入的方式来给8255提供所需的数据(D0-D7)。

2、数据输出选择模块(dout_mux):8255A有3个8位数据端口,即端口A、端口B和端口C,通过数据输出选择模块来最终判断选择哪个端口输出。

3、数据输入输出逻辑判断模块(cntl_log):8255A的三个端口,还有一个控制寄存器,通过数据输出输入逻辑判断模块来判断8255处于何种工作方式。

4、PA口输出模块(portaout):用来控制PA的缓存区的八位数据输出到PA口。

5、PA口输入模块(portain):用来控制PA口读到的数据放到PA的缓存区。

6、PB口输出模块(portbout):用来控制PB的缓存区的八位数据输出到PB口。

7、PB口输入模块(portbin):用来控制PB口读到的数据放到PB的缓存区。

8、PC口输出模块(portcout):用来控制PC口的位输出。

8. 微机原理8255编程

;;8255硬件连接及软件设置:
;;B口方式0输入,PB0~PB3分别连接K1~K4;
;;A口方式0输出,PA0~PA3外接驱动电路控制灯的4种动作;
;;驱动电路,可由74LS06、ULN2003作反相电流放大驱动继电器或固体继电器组成;
;;C口闲置;
;;按以上设置,8255方式控制字是82H ;
;;在PC机作主机的系统中,8255的4个寄存器地址是:
;;A口60H,B口61H,方式控制寄存器63H。

;;汇编程序如下:

SSEG SEGMENT PARA STACK ;堆栈段定义
DW 30H DUP(?)
SSEG ENDS

CSEG SEGMENT ;代码段定义
ASSUME CS:CSEG,DS:CSEG

ORG 200h ;主程序首址
START: MOV AL, 82H ;方式控制字
MOV DX, 63H
OUT DX, AL ;方式控制字送入方式控制寄存器
Scan: IN AL,61H ;扫描从B口读入的K1~K4状态
CALL PRC1 ;开灯、关灯
CALL PRC2 ;是否暂停
CALL PRC3 ;是否换向
CALL PRC3 ;是否移动
JMP Scan ;主程序循环

PRC1 PROC NEAR ;"开/关灯"操作 子程序定义
PUSH AX ;B口状态进栈暂存
TEST AL,00000001B ;检测PB0输入状态
JZ CloseL ;若PB0低电平,表示K1断,转CloseL处执行
OpenL: OUT 60H,AL ;若PB0高电平,表示K1通,PA0输出高电平,开灯
JMP RT1 ;转RT1处指令返回
CloseL: MOV AL,00000000B ;PA0输出低电平
OUT 60H,AL ;关灯
RT1: POP AX ;B口状态出栈
RET ;返回主程序
PRC1 ENDP ;子程序定义完毕

PRC2 PROC NEAR ;"暂停"操作 子程序定义
PUSH AX ;B口状态进栈暂存
TEST AL,00000010B ;检测PB1输入状态
JZ RT2 ;若PB1低电平,表示K2断,不暂停
PAUS: OUT 60H,AL ;若PB1高电平,表示K2通,PA1输出高电平,暂停
RT2: POP AX ;B口状态出栈
RET ;返回主程序
PRC2 ENDP ;子程序定义完毕

PRC3 PROC NEAR ;"换向"操作 子程序定义
PUSH AX ;B口状态进栈暂存
TEST AL,00000100B ;检测PB2输入状态
JZ RT3 ;若PB2低电平,表示K3断,不换向
CHG: MOV AL,00000101B ;若PB2高电平,表示K3通
OUT 60H,AL ;PA2、PA0输出高电平、换向,灯保持亮
RT3: POP AX ;B口状态出栈
RET ;返回主程序
PRC3 ENDP ;子程序定义完毕

PRC4 PROC NEAR ;"移动"操作 子程序定义
TEST AL,00001000B ;检测PB3输入状态
JZ RT4 ;若PB3低电平,表示K4断,不移动
MOVE: MOV AL,00001001B ;若PB3高电平,表示K4通
OUT 60H,AL ;PA3、PA0输出高电平、移动,灯保持亮
RT4: RET ;返回主程序
PRC4 ENDP ;子程序定义完毕

CSEG ENDS ;代码段定义完毕
END START ;主程序结束

9. 82C55A的什么命令可以目测判断99h与0fh

1、99h命令字:

写入8255控制口

作用是:对8255作初始化,A口及C口方式0输入,B口方式0输出;

2、0Fh命令字:

入8255控制口

作用是:对C口的最高位PC7置1,C口其余位保持原状。

(9)82c55编程扩展阅读:

8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。

阅读全文

与82c55编程相关的资料

热点内容
优信二手车解压后过户 浏览:60
Windows常用c编译器 浏览:777
关于改善国家网络安全的行政命令 浏览:832
安卓如何下载网易荒野pc服 浏览:653
javainetaddress 浏览:103
苹果4s固件下载完了怎么解压 浏览:1001
命令zpa 浏览:284
python编译器小程序 浏览:943
在app上看视频怎么光线调暗 浏览:539
可以中文解压的解压软件 浏览:591
安卓卸载组件应用怎么安装 浏览:911
使用面向对象编程的方式 浏览:338
程序员项目经理的年终总结范文 浏览:928
内衣的加密设计用来干嘛的 浏览:431
淮安数据加密 浏览:291
魔高一丈指标源码 浏览:981
松下php研究所 浏览:167
c回调java 浏览:398
梦幻端游长安地图互通源码 浏览:744
电脑本地文件如何上传服务器 浏览:311