标题: 单片机可并行接口8255实验(含汇编语言和C语言代码+仿真) [打印本页]

作者: WEI9980    时间: 2018-11-25 10:12
标题: 单片机可并行接口8255实验(含汇编语言和C语言代码+仿真)
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下(汇编语言):
  1. CSEG AT 0000H
  2. LJMP START
  3. CSEG AT 4100H
  4. PA EQU 0CFA0H
  5. PB EQU 0CFA1H
  6. PCTL EQU 0CFA3H
  7. START: MOV DPTR,#PCTL ;置8255A控制字,ABC口均工作,方式0,AC口输出,B口输入
  8.        MOV A,#082
  9.        MOVX @DPTR,A
  10.        LOOP: MOV DPTR,#PB ;从B口读入开关状态值
  11.        MOVX A,@DPTR
  12.        MOV DPTR,#PA ;从A口将状态值输出显示
  13.        MOVX @DPTR,A
  14.        MOV R7,#10H ;延时
  15. DELO: MOV R6,DEL1
  16. DEL1: DJNZ R6,DEL1
  17.       DJNZ R7,DEL0
  18.       JMP LOOP
  19.       END
复制代码

c语言:
  1. #include<absacc.h>
  2. #define PORTC XBYTE[0Xfefe]
  3. #define CONTROL XBYTE[0Xfeff]
  4. void DELAYLONG(void);
  5. void DELAYSHORT(void);
  6. void main(void)
  7. {
  8. CONTROL=0x80;
  9. PORTC=0XFF;
  10. while(1)
  11. {
  12. PORTC=0Xde;
  13. DELAYLONG();
  14. PORTC=0Xee;
  15. DELAYSHORT();
  16. PORTC=0Xef;
  17. DELAYSHORT();
  18. PORTC=0Xee;
  19. DELAYSHORT();
  20. PORTC=0Xef;
  21. DELAYSHORT();
  22. PORTC=0Xee;
  23. DELAYSHORT();
  24. PORTC=0Xef;
  25. DELAYSHORT();

  26. PORTC=0Xf3;
  27. DELAYLONG();
  28. PORTC=0Xf5;
  29. DELAYSHORT();
  30. PORTC=0Xf7;
  31. DELAYSHORT();
  32. PORTC=0Xf5;
  33. DELAYSHORT();
  34. PORTC=0Xf7;
  35. DELAYSHORT();
  36. PORTC=0Xf5;
  37. DELAYSHORT();
  38. PORTC=0Xf7;
  39. DELAYSHORT();
  40. }
  41. }
  42.                                          
  43. void DELAYLONG(void)
  44. {
  45. unsigned i;
  46. for(i=0;i<30000;i++);
  47. }
复制代码


所有资料51hei提供下载:
23.zip (90.21 KB, 下载次数: 47)



作者: 筱豆先生    时间: 2018-12-24 14:46
仿真不走!!
作者: bb2018620    时间: 2019-1-27 17:52
程序有问题
作者: stephenwen    时间: 2019-6-6 21:20
感谢楼主,但是需要测试看看
作者: qee654    时间: 2020-12-4 20:50
程序和电路图都有点问题,需要修改一下才能正常运行




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1