打印
[ZLG-MCU]

P89LPC901如何控制脚位高低请教?

[复制链接]
1939|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linhai1986|  楼主 | 2009-5-19 16:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问p89lpc901的p3.0脚和p3.1脚怎么设置才可以进行输出输入模式,要在哪个地方设?我设置了,但是不能进行脚位控制,急着用,谢谢。
#include "reg93
#include "uart2.h"
 
void InitIO(void)
{
 
P3M1=0x00;//端口设置
P3M2=0x00;
uart2txd=1;
}
 
sbit uart2txd=P3^0; //pin of the UART2 TxD
sbit uart2rxd=P3^1; //pin of the UART2 RxD
 

void main(void)
{
InitIO(); //初始化系统
uart2txd=1;
uart2rxd=0;
}

相关帖子

沙发
xiaoxin1986| | 2009-5-19 20:44 | 只看该作者

给一个好用的模块给您

#include "reg935.h"
#include <intrins.h> //包括有下面可用函数_nop_,_cror_,_iror_,_lror_,_crol_,_chkfloat_等
#include <absacc.h>  //包括有下面可用函数CBYTE,DBYTE,XBYTE等
#define uchar unsigned char
#define uint unsigned int  

void Delay1ms(unsigned int t); 
void sendbyte(unsigned char value);

void main (void)
{
unsigned char x = 0;

//DIVM = 3 ;   //进行6分频和IO配置成双向口方式,即变成标准单片机了

P0M1 = 0x00;
P0M2 = 0x00;

P1M1 = 0x00;
P1M2 = 0x00;

P2M1 = 0x00;
P2M2 = 0x00;

P3M1 = 0x00;
P3M2 = 0x00;  

  while (1)
  {
 // for (x=0; x<15; x++)
 // {
 // }
  }
}
  
/********************************************************************
** 函数名称:Delay1ms
** 函数功能:LPC900用内部RC,占用TO延时
** 入口参数:要延时的时间
** 出口参数:无
**********************************************************************/
/*
void Delay1ms(unsigned int t)  

 unsigned char tempTMOD;
 tempTMOD        =TMOD;
 TMOD           &=0xF0;
 TMOD           |=0x01;
 do
 {
  TH0         =0xF1;
  TL0         =0x60;
  TR0         =1;
  while(TF0 == 0);
  TF0         =0;
  TR0         =0;
 }while(--t);
 TMOD            =tempTMOD;
}
*/  

 

/********************************************************************
** 函数名称:UartIntIni
** 函数功能:UART初始化,打开串行中断,串口要随时处于中断的状态
    用内部晶振,9600,用T1作为波持率发生器
    硬件上要接上TXD,RXD引脚
** 入口参数:无
** 出口参数:无
**********************************************************************/ 
/*
static unsigned char  UartGetChar=0;
static bit UartIntFlag=0; 
void UartIntIni (void)
{
 TMOD&= 0x0F;
 TMOD|= 0X20;
 TH1  = 0xF4; 
 TL1  = 0XF4;
    TR1  = 1;
 SCON = 0X50; 
 ES   = 1;
 EA   = 1;
}
void UartInt (void) interrupt 4
{
 EA = 0;
 if (RI == 1)
 {
  UartGetChar = SBUF;
  RI = 0;
  UartIntFlag = 1;
 }
 P00  =  ~P00; 
 EA = 1;
}
*/


/********************************************************************
** 函数名称:SendAndGetByte
** 函数功能:查询法来实现向串**换数据
    调用这个函数,先向PC送参数value,然后等待PC送数,之后把数据回送到PC表示应答,最后收到的数据作为返回值。
    即如果用串口助手查看当处于等待的时候,光标前的一个数是函数的参数,当点击发送数据的按键后,则再出现一个数,
    这个数一方面表明你刚才发送的数,另一方面,作为函数的返回值加以利用。
  ---- 用内部晶振,9600,用T1作为波持率发生器---- 
    硬件上要接上TXD,RXD引脚。
**********************************************************************/ 
/*用专用的波特率发生器,使用内部7.3768MHz晶振,9600波特率*/
/*
#define  BRGR1_DAT 0x02
#define  BRGR0_DAT 0xF0  
void sendbyte(unsigned char value)
{   P1M1 = 0x00;    // 设置P1口为准双向口
 P1M2 = 0x00;
    
 SCON = 0x50;    // 设置串口工作模式
 BRGCON = 0x00;   // 关波特率发生器
 BRGR1 = BRGR1_DAT;   // 设置波特率值
 BRGR0 = BRGR0_DAT;  
 BRGCON = 0x03;   // 起动波特率发生器
 
 SBUF  = value;
 while (TI == 0);
 TI    =  0;   
} */


/*用T1作为波特率发生器,使用内部7.3768MHz晶振,9600波特率*/
/*
void sendbyte(unsigned char value)
{
 TMOD = 0X20;
 TH1  = 0xF4; 
 TL1  = 0XF4;
    TR1  = 1;
 SCON =0X50; 

 SBUF  = value;
 while (TI == 0);
 TI    =  0;    

*/   
/*
unsigned char SendAndGetByte(unsigned char value) 
{
 bit tempTR1;
 unsigned char tempTMOD,tempTH1,tempTL1,tempSCON,GetByte;

 tempTR1  = TR1;
 tempTMOD = TMOD; 
 tempTH1  = TH1;
 tempTL1  = TL1;
 tempSCON = SCON;   

 TMOD = 0X20;
 TH1  = 0xF4; 
 TL1  = 0XF4;
    TR1  = 1;
 SCON =0X50; 

 SBUF  = value;
 while (TI == 0);
 TI    =  0;
 while (RI == 0);
 RI    = 0;
 GetByte  = SBUF;
 SBUF  = GetByte;
 while (TI == 0);
 TI    =  0;  

 TR1 = 0;

 TR1  = tempTR1;
 TMOD = tempTMOD;
 TH1  = tempTH1;
 TL1  = tempTL1;
 SCON = tempSCON;  
 TR1 = tempTR1; 

 return GetByte;

*/

/*
提供一些常用的语句
LED3A_B(LED_yellow);
Delay1ms(500);
LED3A_B(LED_off);
Delay1ms(500); 

bit myflag = 0;
if( myflag == 0)
{
LED3A_B(LED_yellow); 
}
else
{
LED3A_B(LED_off); 
}
myflag = ~myflag;
*/
/*
//value 为0灭,为1点红灯,为2点绿灯,为3点橙灯。
//双色二极管,P0.6,P0.7,推挽,01,高电平亮,要接上LED3A和LED3B 
void LED3A_B (unsigned char value)  
{
    #define LED_off    0
 #define LED_red    1
    #define LED_green  2
    #define LED_yellow 3  

 P0M1 &=0x3f;        //双推挽方式去点亮双色二极管  
 P0M2 |=0xC0; 
 switch (value)
 {
  case 0:    P0  &= 0x3F; break; 
  case 1:  P0  &= 0x3F; P0  |= 0x40; break;  
  case 2:     P0  &= 0x3F; P0  |= 0x80; break; 
     case 3:     P0  |= 0xC0; break; 
  default:    break;  
 }
}
*/  


 
 

使用特权

评论回复
板凳
jakecumt| | 2009-5-20 07:25 | 只看该作者

学习

使用特权

评论回复
地板
jaylondon| | 2010-1-1 16:09 | 只看该作者
好程序,偷了参考去了~

使用特权

评论回复
5
贾君鹏子| | 2010-2-10 22:10 | 只看该作者
貌视是个不成功的程序啊,呵呵

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

172

主题

1451

帖子

0

粉丝