调试89s52小系统的一些问题

[复制链接]
2414|6
 楼主| sdhz 发表于 2007-10-25 12:00 | 显示全部楼层 |阅读模式
使用的是wh-280编译器,开发环境keil51<br /><br />问题一:<br />无法对位进行置位和清零,<br />简单的<br />#include&ltreg52.h&gt<br />sbit&nbsp;ab=P1^1<br />void&nbsp;main(void)<br />{<br />while(1)<br />{ab=0;<br />ab=1;}<br />}<br />在硬件上无法检测到电平变化。<br />但是下面对P1P2P3直接设置的时候则可以<br />#include&nbsp;&ltintrins.h&gt<br />#include&ltstdio.h&gt<br />#include&ltabsacc.h&gt<br />#include&ltat89x52.h&gt<br />#define&nbsp;LCD_Data&nbsp;P1<br /><br />typedef&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;uchar;<br />uchar&nbsp;i,a;<br /><br /><br />void&nbsp;&nbsp;&nbsp;&nbsp;Time0Init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TMOD=0x06;<br />&nbsp;&nbsp;&nbsp;&nbsp;TL0=0x30;TH0=0x2a;<br />&nbsp;&nbsp;&nbsp;&nbsp;EA=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;ET0=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;TR0=1;<br />}<br />void&nbsp;&nbsp;&nbsp;&nbsp;Time0_Int(void)&nbsp;interrupt&nbsp;1<br />{<br />//&nbsp;&nbsp;&nbsp;&nbsp;adc0809(ad);<br />&nbsp;&nbsp;&nbsp;&nbsp;i++;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(P1==0xaa){P1=0x55;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;P1=0xaa;<br />//&nbsp;&nbsp;&nbsp;&nbsp;if(ad[1]&gt0xa529){ET0=0;}<br /><br />}<br />void&nbsp;&nbsp;&nbsp;&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;a=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;Time0Init();<br />&nbsp;&nbsp;&nbsp;&nbsp;P1=0xaa;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P3=0x55;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P2=0x55;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P3=0xaa;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P2=0xaa;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />
 楼主| sdhz 发表于 2007-10-25 12:01 | 显示全部楼层

各位前辈帮忙分析一下吧

是不是89s52在按位输出的时候要做某些设置
 楼主| sdhz 发表于 2007-10-25 12:03 | 显示全部楼层

P3口的特殊功能一般是通过什么来启动?

中断寄存器的设置还是别的什么,startup.A51是用来干什么的,怎么修改?
 楼主| sdhz 发表于 2007-10-25 12:04 | 显示全部楼层

对P2设是可以的,但是对P3设则没有反应

//#include&ltat89x52.h&gt<br />#include&ltintrins.h&gt<br />#include&ltreg52.h&gt<br />#define&nbsp;uchar&nbsp;unsigned&nbsp;char<br />#define&nbsp;uint&nbsp;unsigned&nbsp;int<br />uint&nbsp;comm,dat1,dat2,dat3;<br />code&nbsp;uchar&nbsp;table[]=&quot;abcdefgh&quot;;<br />sbit&nbsp;rst=P3^4;<br />sbit&nbsp;rs=P3^1;<br />sbit&nbsp;rw=P3^7;<br />sbit&nbsp;e=P3^6;<br />void&nbsp;delay(uint&nbsp;time);<br />void&nbsp;xiezhiling(void);<br />void&nbsp;xiexianshi(void);<br />void&nbsp;xieddram(void);<br />void&nbsp;main(void)<br />{&nbsp;uchar&nbsp;i;<br /><br />P2=0x00;//rst=0;<br />_nop_();<br />_nop_();<br />_nop_();<br />P2=0xff;//rst=1;<br /><br />while(1)<br />{<br />P2=0xb3;//P3|0x82;<br />//rs=1;<br />//rw=1;<br />P2=0xf1;//P3|0x40;//e=1;<br />P2=0x71;//P3&0x7d;//rs=0;rw=0;<br />P2=0x31;//P3&0xbf;//e=0;<br />comm=0x30;<br />xiezhiling();<br />comm=0x0c;<br />xiezhiling();<br />comm=0x01;<br />xiezhiling();<br />comm=0x02;<br />xiezhiling();<br /><br />comm=0x80;<br />dat2=0x00;<br />xieddram();<br />delay(10000);<br /><br />comm=0x90;<br />xiezhiling();<br />for(i=0;i&lt8;i++)<br />{&nbsp;dat1=table;<br />&nbsp;&nbsp;&nbsp;xiexianshi();<br />&nbsp;&nbsp;&nbsp;delay(10000);<br />}<br />//while(1)<br />//{;<br />}<br />}<br />void&nbsp;delay(uint&nbsp;time)<br />{&nbsp;uint&nbsp;i;<br />for(i=0;i&lttime;i++);<br />}<br />void&nbsp;xiezhiling(void)<br />{&nbsp;<br />P2=0x31;//P3&0x7d;//rs=0;rw=0;<br />P1=comm;<br />_nop_();<br />_nop_();<br />_nop_();<br />P2=0x71;//P3|0x40;//e=1;<br />_nop_();<br />_nop_();<br />_nop_();<br />P2=0x31;//P3&0xbf;//e=0;<br />}<br />void&nbsp;xiexianshi(void)<br />{&nbsp;<br />P2=0x33;//P3=P3|0x02;P3=P3&0x7f;//rs=1;rw=0;<br />P1=dat1;<br />_nop_();<br />_nop_();<br />_nop_();<br />P2=0x73;//P3|0x40;//e=1;<br />_nop_();<br />_nop_();<br />_nop_();<br />P2=0x33;//P3&0xbf;//e=0;<br />}<br />void&nbsp;xieddram(void)<br />{&nbsp;uchar&nbsp;i;<br />xiezhiling();<br />for(i=0;i&lt8;i++)<br />{&nbsp;dat1=0;<br />&nbsp;&nbsp;&nbsp;xiexianshi();<br />&nbsp;&nbsp;&nbsp;dat1=dat2;<br />&nbsp;&nbsp;&nbsp;xiexianshi();<br />}<br />}<br />&nbsp;<br />
ayb_ice 发表于 2007-10-25 14:03 | 显示全部楼层

sbit ab=P1^1后面怎么没有“;”

  
 楼主| sdhz 发表于 2007-10-25 15:02 | 显示全部楼层

回复5楼

这个应该不是主要问题,我试了中间加delay的程序了,也是没有上电&nbsp;之后也是没有电平变化<br />在仿真的时候结果监测P1,P2,P3都是可以变化的<br />但是在小系统里就没有反应<br />问题二中以前也是按位来设置的,中间肯定是有变化时间的,但效果也是看不到P3口电平的变化
 楼主| sdhz 发表于 2007-10-25 15:03 | 显示全部楼层

回复6楼

;在程序里是有的,因为这个程序很短,我是敲上去的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

44

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部