(已解决)新手求助

2019-07-16 04:16发布

本帖最后由 zhliwlj 于 2012-10-21 18:22 编辑

刚接触单片机,第一次搞编程,在练习用8255扩展IO,源码如下,很简单,但在proteus下死活不见效果,PO和P2口没任何反应,delay函数也不起作用,不知道是proteus,keil还是源码的问题,试过各种方法都不行,被折磨好几天了,请各位论坛高手指点迷津
#include<reg51.h>
#include<absacc.h>
#define PA8255 XBYTE[0xfff8]
#define PB8255 XBYTE[0xfff9]
#define PC8255 XBYTE[0xfffa]
#define COM8255 XBYTE[0xfffb]
void delay(unsigned int i);
void init(void)
{
COM8255=0x80;
}

main()
{
init();
while(1)
{
COM8255=0x07;
delay(2);
COM8255=0x06;
delay(2);
}
      
}

void delay(unsigned int i)
{
         unsigned int j=0;
for(;i>0;i--);
{
for(j=0;j<333;j++)
  {
   ;
  }
}
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
zhliwlj
1楼-- · 2019-07-16 07:08
没人吗
kaiming1986
2楼-- · 2019-07-16 08:15
我也是初学者,可我看你的延时程序就好多问题

void delay(unsigned int i)
{
         unsigned int j=0;
for(;i>0;i--);    \这条错了,;i〉0前面少了什么。
{               \这个括号有必要吗
for(j=0;j<333;j++)
  {
   ;        \   这里面什么内容嘛
  }
你确定你的程序能生成,HEX文件?
看你的延时程序都写得一踏糊涂,基本工没学好
zhliwlj
3楼-- · 2019-07-16 09:40
本帖最后由 zhliwlj 于 2012-10-21 13:03 编辑
kaiming1986 发表于 2012-10-21 12:12
我也是初学者,可我看你的延时程序就好多问题

void delay(unsigned int i)

void delay(unsigned int i)
{
         unsigned int j=0;
for(;i>0;i--);    \这条错了,;i〉0前面少了什么。--------这个可以真的省略的
{               \这个括号有必要吗---------------------这个没影响,主要为了规范
for(j=0;j<333;j++)
  {
   ;        \   这里面什么内容嘛-------------------空操作
  }




delay函数没问题的,我的疑问在于怎样访问外部IO或RAM,
#define PA8255 XBYTE[0xfff8]
PA8255=0x07;这样访问不行吗?

lstcspring
4楼-- · 2019-07-16 09:47
你的电路怎么连的,确认地址没有问题,参考一下这个

8255单片机扩展系统设计.zip 下载积分: 积分 -1 分

234.25 KB, 下载次数: 6, 下载积分: 积分 -1 分

zhliwlj
5楼-- · 2019-07-16 10:53
 精彩回答 2  元偷偷看……

一周热门 更多>