No.94462 作者:landysky 邮件:mingxch@sohu.com ID:55105 登陆:1次 文章数:2篇 最后登陆IP:219.138.202.165 最后登陆:2006/6/11 13:03:06 注册:2006/6/9 20:47:38 财富:107 发帖时间:2006/6/9 20:50:43 发贴者IP:219.138.202.165 标题:landysky:怎么仿真可以通过,烧片后程序不运行? 帮我看看啊 摘要:No.94462怎么仿真可以通过,烧片后程序不运行? 帮我看看啊 // LCD Module: LM3037 // Display Size: 144x32 // Driver/Controller: ST7920 // Interface: P0--LCDBUS P2.4--RS // P2.3--RW P2.2--E // by: Landy // Date: 2006-05-25 // System; AT89S52/12MHz/PLCC44 // Edith: 1.0 //------------------------------------------------- // P.S.: p3.6,P3.7正式使用时取消 //------------------------------------------------- #include <stdio.h> #include <reg52.h> #include <intrins.h> //----------------------------------- #define uchar unsigned char // 0~255 #define uint unsigned int // 0~65535 #define LcdBus P0 //LCDM数据总线 #define DataPortB P1 //PIC16C74B PORTB #define BitPortB P3 //接138,读位信息 //----------------------------------- uchar bdata FlagBit; uchar bdata CodeNum[5]; uchar data PortBData; uchar bdata Segvalue[5]; //------------------------------------ sbit ENABLE1 = P3^6; sbit ENABLE2 = P3^7; sbit ENABLE3 = P2^7; sbit ENABLE4 = P2^6; sbit ENABLE5 = P2^5; sbit RS = P2^4; sbit RW = P2^3; sbit E = P2^2; sbit ENABLE6 = P2^1; sbit ENABLE7 = P2^0; sbit FlagBit0 =FlagBit^0; sbit FlagBit1 =FlagBit^1; sbit FlagBit2 =FlagBit^2; sbit FlagBit3 =FlagBit^3; sbit FlagBit4 =FlagBit^4; sbit FlagBit5 =FlagBit^5; sbit FlagBit6 =FlagBit^6; sbit FlagBit7 =FlagBit^7; //----------------------------------- //SubRoutine //----------------------------------- //----------------------------------- /* 定时器1的10ms中断服务程序 */ //void timer1() interrupt 3 using 2{ // TF1=0; // _nop_(); //ReadPortB(); //test(); //_nop_();_nop_(); //} // Delay Routine //----------------------------------- void delayms(uint); void delayms(uint m) // 12MHz Xtal, close to ms value { uint data j; uint data i; for(i=0; i <m; i++) for(j=0; j <109; j++) _nop_(); } //send command void SdCmd(uchar); void SdCmd(uchar Command) { RW = 0; RS = 0; E = 0; LcdBus = Command; E =1; _nop_(); E =0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } //send display data void SdData(uchar); void SdData(uchar DData) { RW =0; RS =1; E =0; LcdBus =DData; E =1; _nop_(); E =0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } void ClrScr(void); void ClrScr(void) { SdCmd(0x01); } //Display void hzkdis(uchar code *); void hzkdis(uchar code *s) {while(*s> 0) {SdData(*s); s++; delayms(2); } } //Read PortB void ReadPortB(void); void ReadPortB(void) { P3=0xff; FlagBit=BitPortB; FlagBit=BitPortB; FlagBit=~FlagBit; PortBData=DataPortB; _nop_(); _nop_(); PortBData=DataPortB; if (FlagBit7) { CodeNum[0]=PortBData; } else if (FlagBit6) { CodeNum[1]=PortBData; } else if (FlagBit5) { CodeNum[2]=PortBData; } else if (FlagBit4) { CodeNum[3]=PortBData; } else if (FlagBit3) { CodeNum[4]=PortBData; } else {_nop_();} } //display data void DDData(void); void DDData(void) { char data *strs=Segvalue+2; uchar t1; delayms(5); SdCmd(0x90); _nop_(); _nop_(); _nop_(); for(t1=0;t1 <3;t1++) { _nop_(); _nop_(); switch(*strs) { case 0:hzkdis("0");break; case 1:hzkdis("1");break; case 2:hzkdis("2");break; case 3:hzkdis("3");break; case 4:hzkdis("4");break; case 5:hzkdis("5");break; case 6:hzkdis("6");break; case 7:hzkdis("7");break; case 8:hzkdis("8");break; case 9:hzkdis("9");break; case 13:hzkdis(" ");break; default:_nop_(); } _nop_(); _nop_(); strs++; _nop_(); _nop_(); } } void PaSet(void); void PaSet(void) { ClrScr(); SdCmd(0x80); _nop_(); delayms(5); } //LED SEGGENT CODE CONVERT TO DIGITAL void LedSegToNum(void); void LedSegToNum() {uchar data value; uchar data *pt1; uchar data *pt2; uchar data mm; pt2=Segvalue; _nop_(); for(mm=0;mm <5;mm++) { switch(CodeNum[mm]) { case 0x20:{value=0;}break; case 0xe9:{value=1;}break; case 0x42:{value=2;}break; case 0xc0:{value=3;}break; case 0x89:{value=4;}break; case 0x84:{value=5;}break; case 0x04:{value=6;}break; case 0xe1:{value=7;}break; case 0x00:{value=8;}break; case 0x80:{value=9;}break; case 0x01:{value=0x0A;}break; case 0x0c:{value=0x0B;}break; case 0x26:{value=0x0C;}break; case 0x48:{value=0x0D;}break; case 0x06:{value=0x0E;}break; case 0x07:{value=0x0F;}break; case 0xcf:{value=0x10;}break; //- RUN case 0xe7:{value=0x11;}break; //ˉ START case 0xee:{value=0x12;}break; //_ STOP case 0xef:{value=0x13;}break; //ALL DARK default:{_nop_();} } *pt2=value; ++pt2; } } //display notice void Display(uchar data *); void Display(uchar data *points) { uchar data *pt4=points; switch(*(pt4+1)) { case 0:{ PaSet(); delayms(5);hzkdis("0 起始电压 ");delayms(5);DDData();hzkdis("%");}break; case 1:{PaSet();hzkdis("1 起动时间 ");DDData();hzkdis("s");}break; case 2:{PaSet();hzkdis("2 软停时间 ");DDData();hzkdis("s");}break; case 3:{PaSet();hzkdis("3 起动延时 ");DDData();hzkdis("s");}break; case 4:{PaSet();hzkdis("4 限流设定 ");DDData();hzkdis("%");}break; case 5:{PaSet();hzkdis("5 编程输出 ");DDData();}break; case 6:{PaSet();hzkdis("6 瞬停设置 ");DDData();}break; case 7:{PaSet();hzkdis("7 瞬停后再起动 ");DDData();}break; case 8:{PaSet();hzkdis("8 起动模式 ");DDData();}break; case 9:{PaSet();hzkdis("9 操作控制方式 ");DDData();}break; case 0xa:{ switch(*pt4) { case 0x10:{PaSet();hzkdis("ˉA 起动状态 ");}break; case 0x11:{PaSet();hzkdis("-A 运行状态 " );}break; case 0x12:{PaSet();hzkdis("_A 软停状态 " );}break; ......
>>返回讨论的主题
|