|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
怎么仿真可以通過,燒片后程序不運行,大家?guī)臀铱纯窗?/h1> |
| 作者:landysky 欄目:技術交流 |
// 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數(shù)據(jù)總線 #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;   |
| 2樓: | >>參與討論 |
| 作者: maple078 于 2006/6/9 13:26:00 發(fā)布:
試下 檢查IC的腳位有沒有接線問題,如31腳有沒有接高電位.我以前調試時就碰上了你這問題.就是31腳沒拉高電壓,程序飛到外部去了.后來多方網(wǎng)上參考別人的調試經(jīng)驗后解決的. |
|
| 3樓: | >>參與討論 |
| 作者: dai_weis 于 2006/6/9 16:34:00 發(fā)布:
你調整一下優(yōu)化級別,我遇到過 因為優(yōu)化級別的問題,程序運行到某些位置會停掉。 |
|
| 4樓: | >>參與討論 |
| 作者: landysky 于 2006/6/10 15:38:00 發(fā)布:
大家能不能談談優(yōu)化的有關知識。 剛接觸C,碰到很多問題,希望大家多多指點! |
|
| 5樓: | >>參與討論 |
| 作者: 457878 于 2006/6/10 19:06:00 發(fā)布:
wave 與 keil 編譯時處理過程有些不一樣 如果你用wave 仿真,就應下載wave生成的 hex |
|
| 6樓: | >>參與討論 |
| 作者: landysky 于 2006/6/11 8:11:00 發(fā)布:
我是下載wave生成的 hex 不知道是什么問題,都快瘋了! |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |