问题1:Core8051的IO操作???<br />答: 读的时候执行x=P0后,实际是将port0i管脚的值赋给x,port0o的状态不会影响到x的值;写的时候执行P0=y后,实际上port0o等于y,port0i的状态不会影响到port0o的值.这个就是输入输出分开的原理.<br />问题2:KEIL中如何去定义那些80C51没有的端口??<br />答: Core8051与标准的8051的端口的定义是一样的<br /> 在通常的reg51.h文件里就有,比如<br /> sfr P0 = 0x80;<br /> sfr P1 = 0x90;<br /> sfr P2 = 0xA0;<br /> sfr P3 = 0xB0;<br /> 至于所谓没有定义的端口是不需要定义的,比如外部存储器端口是专门接<br /> 存储器的,不占用P0,P2口.<br />问题3:选用那种器件????<br /> 其实选用那种器件是选用那种寄存器头文件和启动代码的问题.<br /> 标准的51器件即可,比如AT89C51的头文件如下<br />#ifndef __REG51_H__<br />#define __REG51_H__<br /><br />/* BYTE Register */<br />sfr P0 = 0x80;<br />sfr P1 = 0x90;<br />sfr P2 = 0xA0;<br />sfr P3 = 0xB0;<br />sfr PSW = 0xD0;<br />sfr ACC = 0xE0;<br />sfr B = 0xF0;<br />sfr SP = 0x81;<br />sfr DPL = 0x82;<br />sfr DPH = 0x83;<br />sfr PCON = 0x87;<br />sfr TCON = 0x88;<br />sfr TMOD = 0x89;<br />sfr TL0 = 0x8A;<br />sfr TL1 = 0x8B;<br />sfr TH0 = 0x8C;<br />sfr TH1 = 0x8D;<br />sfr IE = 0xA8;<br />sfr IP = 0xB8;<br />sfr SCON = 0x98;<br />sfr SBUF = 0x99;<br /><br /><br />/* BIT Register */<br />/* PSW */<br />sbit CY = 0xD7;<br />sbit AC = 0xD6;<br />sbit F0 = 0xD5;<br />sbit RS1 = 0xD4;<br />sbit RS0 = 0xD3;<br />sbit OV = 0xD2;<br />sbit P = 0xD0;<br /><br />/* TCON */<br />sbit TF1 = 0x8F;<br />sbit TR1 = 0x8E;<br />sbit TF0 = 0x8D;<br />sbit TR0 = 0x8C;<br />sbit IE1 = 0x8B;<br />sbit IT1 = 0x8A;<br />sbit IE0 = 0x89;<br />sbit IT0 = 0x88;<br /><br />/* IE */<br />sbit EA = 0xAF;<br />sbit ES = 0xAC;<br />sbit ET1 = 0xAB;<br />sbit EX1 = 0xAA;<br />sbit ET0 = 0xA9;<br />sbit EX0 = 0xA8;<br /><br />/* IP */ <br />sbit PS = 0xBC;<br />sbit PT1 = 0xBB;<br />sbit PX1 = 0xBA;<br />sbit PT0 = 0xB9;<br />sbit PX0 = 0xB8;<br /><br />/* P3 */<br />sbit RD = 0xB7;<br />sbit WR = 0xB6;<br />sbit T1 = 0xB5;<br />sbit T0 = 0xB4;<br />sbit INT1 = 0xB3;<br />sbit INT0 = 0xB2;<br />sbit TXD = 0xB1;<br />sbit RXD = 0xB0;<br /><br />/* SCON */<br />sbit SM0 = 0x9F;<br />sbit SM1 = 0x9E;<br />sbit SM2 = 0x9D;<br />sbit REN = 0x9C;<br />sbit TB8 = 0x9B;<br />sbit RB8 = 0x9A;<br />sbit TI = 0x99;<br />sbit RI = 0x98;<br /><br />#endif<br />
|