打印
[新手园地]

弱弱的问一下M051 P0口的问题

[复制链接]
1807|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
鹭岛闲人|  楼主 | 2012-1-11 14:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
john_lee| | 2012-1-11 14:44 | 只看该作者
设置为“开漏”模式。

使用特权

评论回复
板凳
鹭岛闲人|  楼主 | 2012-1-11 14:57 | 只看该作者
#define H_data P0   

在M051中应如何定义,我定义#define H_data P0  编译提示出错,在M051是不是不能直接用P0表示,求解答。

使用特权

评论回复
地板
鹭岛闲人|  楼主 | 2012-1-11 14:58 | 只看该作者
2# john_lee

#define H_data P0   

在M051中应如何定义,我定义#define H_data P0  编译提示出错,在M051是不是不能直接用P0表示,求解答。

使用特权

评论回复
5
john_lee| | 2012-1-11 15:08 | 只看该作者
输出:
#define H_data_out     (PORT0->DOUT)

输入:
#define H_data_in       (PORT0->PIN)

使用特权

评论回复
6
鹭岛闲人|  楼主 | 2012-1-11 15:19 | 只看该作者
5# john_lee
谢谢

使用特权

评论回复
7
zhouwaiting| | 2012-1-11 15:30 | 只看该作者
居然还可以这样定义,有偷学了一招

使用特权

评论回复
8
鹭岛闲人|  楼主 | 2012-1-11 15:45 | 只看该作者
6# 鹭岛闲人

再请教一个问题,M051是否和C51一样有进位标志CY呢,有的话是具体哪个寄存器呢

使用特权

评论回复
9
kyzb001| | 2012-1-11 16:24 | 只看该作者
- - 这个和51是不一样的!

使用特权

评论回复
10
鹭岛闲人|  楼主 | 2012-1-11 16:44 | 只看该作者
9# kyzb001
那具体怎么操作,你知道吗

使用特权

评论回复
11
john_lee| | 2012-1-11 16:52 | 只看该作者
m051是ARM Cortex-M0,不是51,你如果非要去找CY,那没办法,你只能用51了。
如果你找CY是为了实现某个功能,不妨说出来,一定有办法解决的。

使用特权

评论回复
12
鹭岛闲人|  楼主 | 2012-1-11 17:05 | 只看该作者
11# john_lee

//=========================写汉字16*16===================================
void write_hz16(uchar *p,uint xs,uint ys,uchar mun)
{
uchar k,tem1,tt,n,y,tem0;  
y=ys;
   LCD_WRITE_CMD(0x2a);  //column address set
   LCD_WRITE_DATA(xs>>8);  //start address 0x00,0x00
   LCD_WRITE_DATA(xs);  //start address 0x00,0x00
   LCD_WRITE_CMD(0x2b);  //row address set
   LCD_WRITE_DATA(ys>>8);  //start address 0x00,0x00
   LCD_WRITE_DATA(ys);     //start address 0x00,0x00
   LCD_WRITE_CMD(0x2C);

for(tem0=0;tem0<mun;tem0++)   //字数
{   
  for( tem1=0;tem1<16;tem1++)   //16*16 控制Y参数
   {
    for(n=0;n<2;n++)             //4可变  8*4   控制X参数
     {
     k=*p++;
     for(tt=0;tt<8;tt++)          //字节  控制X参数
     {
       k=k<<1;
       if(clean)
       {
         LCD_WRITE_DATA(color1H);
        LCD_WRITE_DATA(color1L);
       }
       else
       {
       if(CY==1)                   //C51寄存器
       {
     LCD_WRITE_DATA(0x00);
     LCD_WRITE_DATA(0x00);
              }
       else
       {
      LCD_WRITE_DATA(color1H);
      LCD_WRITE_DATA(color1L);
           }
     }
        }
     }
      ys++;
   LCD_WRITE_CMD(0x2a);  //column address set
   LCD_WRITE_DATA(xs>>8);  //start address 0x00,0x00
   LCD_WRITE_DATA(xs);  //start address 0x00,0x00
   LCD_WRITE_CMD(0x2b);  //row address set
   LCD_WRITE_DATA(ys>>8);  //start address 0x00,0x00
   LCD_WRITE_DATA(ys);  //start address 0x00,0x00
   LCD_WRITE_CMD(0x2C);
    }
     xs=xs+16;                  //16*16文字
     ys=y;
   LCD_WRITE_CMD(0x2a);  //column address set
   LCD_WRITE_DATA(xs>>8);  //start address 0x00,0x00
   LCD_WRITE_DATA(xs);  //start address 0x00,0x00

   LCD_WRITE_CMD(0x2b);  //row address set
   LCD_WRITE_DATA(ys>>8);  //start address 0x00,0x00
   LCD_WRITE_DATA(ys);  //start address 0x00,0x00
   LCD_WRITE_CMD(0x2C);
   }
}

我是想将此段程序移植到M051芯片上,这个是LCD厂家显示汉字的一段DEMO,看看能否解决。

使用特权

评论回复
13
Ryanhsiung| | 2012-1-11 17:34 | 只看该作者
太好解决了啊!
   你可能if(k&80==1) 就可以完成你要目的

使用特权

评论回复
14
鹭岛闲人|  楼主 | 2012-2-1 09:33 | 只看该作者
谢谢,已得到解决!

使用特权

评论回复
15
鹭岛闲人|  楼主 | 2012-2-2 14:48 | 只看该作者
谢谢

使用特权

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

本版积分规则

0

主题

11

帖子

0

粉丝