完整版 电路图和程序代码 下载地址
https://pan.baidu.com/s/1yUiftSP7m3wWed8N02-_Ag?pwd=3456
部分代码展示
/* Main.c file generated by New Project wizard
*
* Processor: 8086
* Compiler: Digital Mars C
*
* Before starting simulation set Internal Memory Size
* in the 8086 model properties to 0x10000
*/
//#define MY8255 0000H
#define MY8255_A 0000H
#define MY8255_B 0004H
#define MY8255_C 0008H
#define MY8255_MODE 000CH
char dtable1[] = {3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH};
char dtable2[] = {0BFH, 86H, 0DBH, 0CFH, 0E6H, 0EDH, 0FDH, 87H, 0FFH, 0EFH};
int c = 8;
int b = 0;
void init_8255(void);
void vote(void);
void count(void);
void display1(void);
void display2(void);
void main(void)
{
while (1)
{
init_8255();
vote();
count();
if (b<4) //判断投票是否通过
display1();
else
display2();
}
}
///
void init_8255(void) //8255初始化
{
_asm
{
MOV DX,MY8255_MODE ;初始化8255工作方式
MOV AL,89H ;方式0,A口输出,C口输入
OUT DX,AL
}
}
/
/
void vote(void) //输入投票
{
_asm
{
MOV DX,MY8255_C
IN AL,DX
NOT AL
}
}
/
/
void count(void) //统计投票人数
{
_asm
{
MOV CX,c
MOV BX,00H
LOOP1:
TEST AL,80H ;将输入人数与10000000对比,相同则计数1
JZ NEXT
INC BX
MOV b,BX
NEXT:
SHL AL,1 ;将输入人数左移移位,依次对比
LOOP LOOP1
}
}
/
/
void display1(void)
{