久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: error C141: syntax error near 'void'求助解決單片機C語言代碼錯誤 [打印本頁]

作者: LiuQi67zz    時間: 2022-12-18 14:08
標題: error C141: syntax error near 'void'求助解決單片機C語言代碼錯誤
#include<reg52.h>
#include<intrins.h>
unsigned char code cdis1[]={"SPEED:"};
unsigned char code cdis2[]={"r/min"};
sbit LCD_RS=P2^6;//寄存器選擇位將RS位定義為P2.6引腳
sbit LCD_RW=P2^5;//讀寫選擇位將RW位定義為P2.5引腳
sbit LCD_EN=P2^7;//使能信號位將EN位定義為P2.7引腳
bit sec=0;
unsigned char msec=0,Hdata=0,Ldata=0,Count=0;
unsigned long temp=0;
unsigned char data display[]={0x00,0x00,0x00,0x00,0x00};
char code reserve[3] _at_ 0x3b;//保留0x3b開始的3個字節
/*********************************************************
us延時函數
*********************************************************/
void delayNOP()
{
_nop_();
        _nop_();
_nop_();
_nop_();
}
/*********************************************************
ms延時函數
*********************************************************/
void delayms(unsigned int ms)
{
unsigned char n;
while(ms--)
{
for(n=0;n<114;n++);}
}
/**********************************************************
檢查LCD忙狀態lcd_busy為1時忙等待。
lcd-busy為0時,閑可寫指令與數據。
**********************************************************/
bit lcd_busy()
{
bit result;
LCD_RS=0;//根據規定RS為低電平RW為高電平時可以讀狀態
LCD_RW=1;
LCD_EN=1;//EN=1才允許讀寫
delayNOP();//空操作給硬件反應時間
result=(bit)(P0&0x80);//將忙碌標志電平賦給P0.7
LCD_EN=0;//將E恢復低電平
return(result);
}
/**********************************************************寫指令數據到LCDRS=LRW=LE=高脈沖D0-D7=指令碼。
**********************************************************/
void lcd_wcmd(unsigned char cmd)
{
while(lcd_busy());//如果忙就等待
LCD_RS=0;//根據規定RS和R/W同時為低電平時可以寫入指令
LCD_RW=0;
LCD_EN=1;//E置低電平(寫指令時E為高脈沖就是讓E從0到1發生正跳變所以應先置"0")
P0=cmd;//將數據送入P0口即寫入指令或地址
delayNOP();//空操作給硬件反應時間
LCD_EN=0;//當由高電平跳變成低電平時液晶模塊開始執行命令
}
/**********************************************************
將數據(字符的標準ASCII碼)寫入液晶模塊
**********************************************************/
void lcd_wdat(unsigned char dat)
{
while(lcd_busy());
LCD_RS=1;//RS為高電平RW為低電平時可以寫入數據
LCD_RW=0;
LCD_EN=1;
P0=dat;//將數據送入P0口即將數據寫入液晶模塊
delayNOP();
LCD_EN=0;
//當E由高電平跳變成低電平時液晶模塊開始執行命令}
/**********************************************************
LCD初始化設定
**********************************************************/

void lcd_init(void)
{
        delayms(15);//延時15ms首次寫指令時應給LCD一段較長的反應時間
        lcd_wcmd(0x38);//顯示模式設置16*2顯示5*7點陣8位數據
        delayms(5);//延時5ms給硬件一點反應時間
        lcd_wcmd(0x38);
        delayms(5);//延時5ms給硬件一點反應時間
        lcd_wcmd(0x38);//連續三次確保初始化成功
        delayms(5);//延時5ms給硬件一點反應時間
        lcd_wcmd(0x0c);//顯示模式設置顯示開無光標光標不閃爍
        delayms(5);//延時5ms給硬件一點反應時間
        lcd_wcmd(0x06);//顯示模式設置光標右移字符不移
        delayms(5);//延時5ms給硬件一點反應時間
        lcd_wcmd(0x01);//清屏幕指令將以前的顯示內容清除
        delayms(5);//延時5ms給硬件一點反應時間
}
/**********************************************************
指定字符顯示的實際地址
**********************************************************/
void lcd_pos(unsigned char pos)
{
lcd_wcmd(pos|0x80);//數據指針=80+地址變量
}
/**********************************************************
顯示函數
**********************************************************/
void play()
{
unsigned char n;
        for(n=0;n<=3;n++)//數據轉換
        {
        display[n]=temp%10+0x30;
        temp=temp/10;
        }
display[4]=temp+0x30;
for(n=4;n>0;n--)//高位為"0"不顯示
{
        if(display[n]==0x30)
                display[n]=0x20;
        else
                break;
}
lcd_pos(0x46);//顯示實際頻率值
for(n=4;n!=0xff;n--)
lcd_wdat(display[n]);
}
/*********************************************************
主函數
*********************************************************/
void main()
{
unsigned char m;
unsigned long frq_num;
P0=0xff;
lcd_init();//LCD初始化
lcd_pos(0x00);//設置顯示位置為第一行
for(m=0;m<6;m++)
lcd_wdat(cdis1[m]);//顯示字符
lcd_pos(0x4b);//設置顯示位置為第二行
for(m=0;m<5;m++)
lcd_wdat(cdis2[m]);//顯示字符
TMOD=0x51;//定時器0工作在定時方式//定時器1工作在計數方式
TH0=0x4c;//50ms定時
TL0=0x00;
TH1=0x00;//計數初值
TL1=0x00;
ET0=1;//使能TIMER0中斷
ET1=1;//使能TIMER1中斷
EA=1;//允許中斷
PT1=1;//定義TIMER1中斷優先
TR0=1;
TR1=1;
while(1)
{
        if(sec)
        {
        Hdata=TH1;//取計數值
        Ldata=TL1;
        frq_num=((Count*65535+Hdata*256+Ldata)*60/80);//取數計算
        TH1=0;
        TL1=0;
        sec=0;
        Count=0;
        TR1=1;
        TR0=1;//決定了中斷方式為T1定時計數中斷
        }
temp=frq_num;
play();
}
}
/**********************************************************
Time0
中斷函數
**********************************************************/
void Time0() interrupt 1
{
TH0=0x4c;//50ms定時
TL0=0x00;
msec++;
if(msec==20)//50*20=1S
{TR0=0;//關閉TIMER0
TR1=0;//關閉TIMER1
msec=0;
sec=1;//置秒標記位
}
}
/**********************************************************
Time1
中斷函數
**********************************************************/
void Time1() interrupt 3
{
Count++;
}



作者: zhxiufan    時間: 2022-12-18 17:54
前一個函數void lcd_wdat(unsigned char dat)
少了一個}。加上就好了

作者: wpppmlah    時間: 2022-12-18 19:49
/**********************************************************
將數據(字符的標準ASCII碼)寫入液晶模塊
**********************************************************/
void lcd_wdat(unsigned char dat)
{
while(lcd_busy());
LCD_RS=1;//RS為高電平RW為低電平時可以寫入數據
LCD_RW=0;
LCD_EN=1;
P0=dat;//將數據送入P0口即將數據寫入液晶模塊
delayNOP();
LCD_EN=0;
//當E由高電平跳變成低電平時液晶模塊開始執行命令}

看最后一個字符  }  被注釋了,,,,,,,,,這個函數沒有配對的 }  


作者: 張天師    時間: 2022-12-18 20:55
void delayms(unsigned int ms)
void lcd_wdat(unsigned char dat)
兩個函數都少了一個}
作者: lkc8210    時間: 2022-12-18 23:28








歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 91中文| 在线播放国产一区二区三区 | 精品国产18久久久久久二百 | 国产精品亚洲欧美日韩一区在线 | 91精品国产91久久久久久三级 | 久久久免费少妇高潮毛片 | 欧美一级黄视频 | 欧美日韩国产一区二区三区 | 精品久久久久一区 | 一本久久a久久精品亚洲 | 国产精品片 | 在线视频一区二区三区 | 久久成人一区 | 91综合在线视频 | 久久国产精品一区二区三区 | 又爽又黄axxx片免费观看 | 99久久婷婷国产综合精品电影 | 波多野结衣二区 | 欧美片网站免费 | 国内在线视频 | 国产成人99久久亚洲综合精品 | 国产一区精品 | 91精品国产91久久久久久不卞 | 日韩电影免费在线观看中文字幕 | 日韩免费激情视频 | 亚洲一区二区三区免费在线观看 | 国产日韩欧美一区二区在线播放 | 成人高清在线 | 中文字幕一区在线观看视频 | 成人一区二区三区 | 成人高清在线视频 | 亚洲精品久久久久中文字幕欢迎你 | chengrenzaixian| 欧美黄色大片在线观看 | 色久伊人 | 亚洲精品v日韩精品 | 99热在线免费 | 中文在线一区二区 | 成人做爰www免费看 午夜精品久久久久久久久久久久 | 91视频在线看 | 春色av|