3610|2

61

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

12864液晶屏检测忙出问题!? [复制链接]

带字库的,控制器是st7920,检测忙总是不成功,DB口接在P0上的
#define  LcdData P0

bit Check_Busy()
{
    bit busy;
    RS = 0;
    RW = 1;
    E = 1;
      _nop_();
    busy = (bit)(LcdData&0x80);
    E = 0;
    return busy;
}

检查结果总是忙。

最新回复

我用的HS1286410A; [code] struct PIN {         unsigned char bit0 :1;         unsigned char bit1 :1;         unsigned char bit2 :1;         unsigned char bit3 :1;         unsigned char other:4; }; #define STA0 ((struct PIN *)&SIR_io.p2.in.byte[2])->bit0        //input indicate bit #define STA1 ((struct PIN *)&SIR_io.p2.in.byte[2])->bit1 #define OUTDATA SIR_io.p2.out.byte[2] //output data #define INDATA SIR_io.p2.in.byte[2]   //input data #define DIR           SIR_io.p2.dir.byte[2]  //direction #define WR ((struct PIN *)&SIR_io.p2.out.byte[3])->bit3           //write #define CS ((struct PIN *)&SIR_io.p2.out.byte[3])->bit2           //cs #define CD ((struct PIN *)&SIR_io.p2.out.byte[3])->bit1           //command #define RD ((struct PIN *)&SIR_io.p2.out.byte[3])->bit0           //read #define BL ((struct PIN *)&SIR_io.p1.out.byte[0])->bit0                //black light #define RC ((struct PIN *)&SIR_io.p1.out.byte[0])->bit1                //receive message #define LCD_T_BASE 0X0000              // 文本区内存首地址 #define LCD_A_BASE 0X1000              // 属性区内存首地址 #define WD 0x16                                   // 定义屏幕文本宽度为21字节 void Pr0() {         DIR = 0x00;         RD = 1;         WR = 1;         CD = 1;         OUTDATA = OUTDATA|0xFF;         RD = 0;         asm("nop");         DIR = 0xFF;         RD = 1;         asm("nop"); } void OutCommand(uint8 accept) {         DIR = 0x00;         WR = 0;         asm("nop");         OUTDATA = accept;         WR = 1;         asm("nop");         DIR = 0xFF;         CD = 1;         asm("nop"); } void CheckSTA1() { Ptemp01:         Pr0();         if (STA0 == 0)        {                 goto Ptemp01;                 }         if (STA1 == 0)        {                 goto Ptemp01;         } }   详情 回复 发表于 2009-5-19 14:30
点赞 关注

回复
举报

68

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
忘了我用的是啥片子了

也是,老在忙

后来干脆我就不检测了,延时一定时间,直接写缓冲

反正也用着,呵呵
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我用的HS1286410A;
[code]
struct PIN
{
        unsigned char bit0 :1;
        unsigned char bit1 :1;
        unsigned char bit2 :1;
        unsigned char bit3 :1;
        unsigned char other:4;
};
#define STA0 ((struct PIN *)&SIR_io.p2.in.byte[2])->bit0        //input indicate bit
#define STA1 ((struct PIN *)&SIR_io.p2.in.byte[2])->bit1
#define OUTDATA SIR_io.p2.out.byte[2] //output data
#define INDATA SIR_io.p2.in.byte[2]   //input data
#define DIR           SIR_io.p2.dir.byte[2]  //direction
#define WR ((struct PIN *)&SIR_io.p2.out.byte[3])->bit3           //write
#define CS ((struct PIN *)&SIR_io.p2.out.byte[3])->bit2           //cs
#define CD ((struct PIN *)&SIR_io.p2.out.byte[3])->bit1           //command
#define RD ((struct PIN *)&SIR_io.p2.out.byte[3])->bit0           //read
#define BL ((struct PIN *)&SIR_io.p1.out.byte[0])->bit0                //black light
#define RC ((struct PIN *)&SIR_io.p1.out.byte[0])->bit1                //receive message
#define LCD_T_BASE 0X0000              // 文本区内存首地址
#define LCD_A_BASE 0X1000              // 属性区内存首地址
#define WD 0x16                                   // 定义屏幕文本宽度为21字节
void Pr0()
{
        DIR = 0x00;
        RD = 1;
        WR = 1;
        CD = 1;
        OUTDATA = OUTDATA|0xFF;
        RD = 0;
        asm("nop");
        DIR = 0xFF;
        RD = 1;
        asm("nop");
}

void OutCommand(uint8 accept)
{
        DIR = 0x00;
        WR = 0;
        asm("nop");
        OUTDATA = accept;
        WR = 1;
        asm("nop");
        DIR = 0xFF;
        CD = 1;
        asm("nop");
}

void CheckSTA1()
{
Ptemp01:
        Pr0();
        if (STA0 == 0)        {
                goto Ptemp01;
                }
        if (STA1 == 0)        {
                goto Ptemp01;
        }
}
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表