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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5829|回復: 1
打印 上一主題 下一主題
收起左側

atmel studio gcc程序沒有通過,expected ';' before 'for' 程序報錯,

[復制鏈接]
跳轉到指定樓層
樓主
  1. /*
  2. * 能接收串口信息的帶中英文硬字庫的80_16點陣顯示屏.c
  3. *
  4. * Created: 2015-2-14 09:07:21
  5. *  Author: Administrat<div class="blockcode"><blockquote>//-----------------------------------------------------------------
  6. //  名稱:用SPI接口讀寫AT25F4096子程序
  7. //-----------------------------------------------------------------
  8. #define F_CPU 4000000UL
  9. #include <avr/io.h>
  10. #include <util/delay.h>
  11. #define INT8U   unsigned char
  12. #define INT16U  unsigned int
  13. #define INT32U  unsigned long

  14. //AT25F4096指令集
  15. #define WREN           0x06  //
  16. #define WRDI           0x04  //
  17. #define RDSR           0x05  //
  18. #define WRSR           0x01  //
  19. #define READ           0x03  //
  20. #define PROGRAM        0x02  //
  21. #define SECTOR_ERASE   0x52  //
  22. #define CHIP_ERASE     0x62  //
  23. #define RDID           0x15
  24. //SPI使能與禁用
  25. #define SPI_EN()(PORTB&=0xEF)
  26. #define SPI_DI()(PORTB|=0x10)
  27. //-----------------------------------------------------------------
  28. // SPI主機初始化
  29. //-----------------------------------------------------------------
  30. void SPI_MasterInit()
  31. {
  32.    //
  33.    DDRB=0b10110000;PORTB=0xFF;
  34.    //
  35.    SPCR|=_BV(SPE)|_BV(MSTR)|_BV(SPR0);
  36. }

  37. //-----------------------------------------------------------------
  38. // SPI數據傳輸
  39. //-----------------------------------------------------------------
  40. INT8U SPI_Transmit(INT8U dat)
  41. {
  42.    SPDR=dat;                        //
  43.    while(!(SPSR&_BV(SPIF)));        //
  44.    SPSR|=_BV(SPIF);                 //
  45.    return SPDR;                    
  46. }

  47. //-----------------------------------------------------------------
  48. // 讀AT25F4096芯片狀態
  49. //-----------------------------------------------------------------
  50. INT8U Read_SPI_Status()
  51. {
  52.      INT8U starus;
  53.          SPI_EN();
  54.          SPI_Transmit(RDSR);             //
  55.          starus=SPI_Transmit(0xFF);
  56.          SPI_DI();
  57.          return starus;
  58. }

  59. //-----------------------------------------------------------------
  60. // AT25F4096忙等待
  61. //-----------------------------------------------------------------
  62. void Busy_Wait()
  63. {  
  64.     while(Read_SPI_Status()&0x01);   //
  65. }

  66. //-----------------------------------------------------------------
  67. // 向AT25F4096寫入三個字節的地址0x000000-0x07FFFF (有效位為19位)
  68. //-----------------------------------------------------------------
  69. void Write_3_Bytes_AT25F4096_Address(INT32U addr)
  70. {
  71.      SPI_Transmit((INT8U)(addr>>16));
  72.      SPI_Transmit((INT8U)(addr>>8));
  73.          SPI_Transmit((INT8U)(addr));
  74. }

  75. //-----------------------------------------------------------------
  76. // 從指定地址讀單字節
  77. //-----------------------------------------------------------------
  78. INT8U Read_Byte_FROM_AT25F4096(INT32U addr)
  79. {
  80.     INT8U dat;
  81.         SPI_EN();
  82.         SPI_Transmit(READ);
  83.         Write_3_Bytes_AT25F4096_Address(addr);
  84.         dat=SPI_Transmit(0xFF);
  85.         SPI_DI();
  86.     return dat;
  87. }

  88. //-----------------------------------------------------------------
  89. // 從指定地址讀多字節到緩沖
  90. //-----------------------------------------------------------------
  91. void Read_Some_Bytes_FROM_AT25F4096(INT32U addr, INT8U *p, INT16U len)
  92. {
  93.    INT16U i;
  94.    SPI_EN();
  95.    SPI_Transmit(READ);
  96.    Write_3_Bytes_AT25F4096_Address(addr)      //
  97.    for(i=0;i<len;i++)                         //
  98.     p[i]=SPI_Transmit(0xFF);                  //
  99.    SPI_DI();

  100. }

  101. //-----------------------------------------------------------------
  102. // 向AT25F4096指定地址寫入單字節數據
  103. //-----------------------------------------------------------------
  104. void Write_Byte_TO_AT25F4096(INT32U addr,INT8U dat)
  105. {       
  106.     SPI_EN();
  107.         SPI_Transmit(WREN);                       //
  108.         SPI_DI();
  109.     Busy_Wait();
  110.         SPI_EN();
  111.         SPI_Transmit(PROGRAM);                    //
  112.         Write_3_Bytes_AT25F4096_Address(addr)     //
  113.         SPI_Transmit(dat);                        //
  114.         SPI_DI();
  115.         Busy_Wait();
  116. }
復制代碼

and
*/
//-----------------------------------------------------------------
//  名稱: 能接收串口信息的帶中英文硬字庫的80*16點陣顯示屏
//-----------------------------------------------------------------
//  說明: 本例運行時,點陣屏將滾動顯示一組固定信息
//        當接收到串口發送來的中英文/全角/半角字符時,點屏將開始
//        滾動顯示所接收到的信息.
//----------串口發送待顯示中英文字符的操作說明----------
//A. 在串口助手中輸入 ## 加回鍵后發送時點陣顯示屏將被清空
//B. 輸入一串漢字或英文字符后一定要在后面按下回車鍵,然后再點擊發送按鈕
//C. ##可以單獨出現,也可以在一串文字開頭或中間某位置出現,##前的內容將被清除
//D. 注意在虛擬串口軟件VSPD中設置COM3,COM4對連,且注意參數一致
//E. 本例運行需要安裝并配置VSPD
//F. 512K字節EEPROM中存放有:
//1. 16*16點陣中文字庫
//2. 8*16點陣英文字庫
//
//-----------------------------------------------------------------
#define F_CPU 4000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <string.h>
#include <stdio.h>
#include <util/delay.h>
#define INT8    signed   char
#define INT8U   unsigned char
#define INT16U  unsigned int
#define INT32U  unsigned long

//74595及74154相關引腳定義
#define DS         PA0   //
#define SH_CP      PA1
#define ST_CP      PA2
#define E1_74HC154 PC7
//74595及74154相關引腳操作
#define DS_1()     PORTA|= _BV(DS)
#define DS_0()     PORTA&=~_BV(DS)
#define SH_CP_1()  PORTA|=~_BV(SH_CP)
#define SH_CP_0()  PORTA&=~_BV(SH_CP)
#define ST_CP_1()  PORTA|=~_BV(ST_CP)
#define ST_CP_0()  PORTA&=~_BV(ST_CP)
//74154譯碼器使能與禁止
#define EN_74HC154() PORTC&=~_BV(E1_74HC154)
#define EN_74HC154() PORTC|= _BV(E1_74HC154)
//SPI相關函數
extern void SPI_MasterInit
extern void Read_SPI_Some_Bytes_FROM_AT25F4096(INT32U addr,INT8U*p,INT16U len);
//最多可接收的漢字個數
#define MAX_WORD_COUNT 50
//開始時待顯示的中英文字符串
//及從串口接收的中英文數字等字符信息都將覆蓋保存到bMsg中
struct MSG
{
        INT8U  Buffer[MAX_WORD_COUNT*2 + 2];
        INT16U Len;
} bMsg;

//緩沖可保存漢字點陣數據的最大漢字個數(如果為半角字符則*2)
#define MAX_DOT_WORD_COUNT 20
//待顯示漢字點陣數據緩沖
INT8U WORD_Dots_Buffer[MAX_DOT_WORD_COUNT * 32];
//------------------------------------------------------------------
// USART初始化
//------------------------------------------------------------------
void Init_USART()
{
  UCSRB=_BV(RXEN)|_BV(RXCIE);
  UCSRC=_BV(URSEL)|_BV(UCSZ1)|_BV(UCSZ0);
  UBRRL=(F_CPU/9600/16-1)%256;
  UBRRH=(F_CPU/9600/16-1)%256;
}

//-----------------------------------------------------------------
// 串行輸入子程序
//-----------------------------------------------------------------
void Serial_Input_595(INT8U dat)
{
   INT8U i;
   for (i=0x80;i!=0x00;i>>=1)
   {
      if(dat&i)DS_1();else DS_0();
      SH_CP_0();_delay_us(2);
      SH_CP_1();_delay_us(2);
    }
}
//-----------------------------------------------------------------
// 并行輸出子程序
//-----------------------------------------------------------------
void Parallel_Output_595()
{
   ST_CP_0();_delay_us(1);
   ST_CP_1();_delay_us(1);
}

//-----------------------------------------------------------------
// 根據bMsg.Buffer,從硬字庫讀取全角或半角字符點陣數據并完成必要轉換
//-----------------------------------------------------------------
void Read_SPI_Word_Dot_Matrix_AND_Convert()
{
INT16U i,j=0,k;
INT32U Offset;
INT8U SectionCode,PlaceCode;
INT8U Temp_Buf[32];
for(i=0;i<MAX_DOT_WORD_COUNT*32;i++)
WORD_Dots_Buffer=0x00;
i=0;
while(i<bMsg.Len)
{
   if (bMsg.Buffer>0xA0)
   {
        //
                SectionCode=bMsg.Buffer    - 0xA0;
                PlaceCode=bMsg.Buffer[i+1]    - 0xA0;
                //
                Offset=(94L*(SectionCode -1)+(PlaceCode -1))*32L;
                //
                Read_Some_Bytes_FROM_AT25F4096(Offset,Temp_Buf,32);
                //
                //
                for (k=0;k<16;k++)
                {
                    WORD_Dots_Buffer[j+k] =Temp_Buf[2*k];
                    WORD_Dots_Buffer[j+k+16]=Temp_Buf[2*k+1];
                }
            //
                    //
                    //
                j+=32;i+=2
   }
   else
   {
           //
           //
           offset=267616L+bMsg.Buffer*16;
           Read_Some_Bytes_FROM_AT25F4096(Offset,WORD_Dots_Buffer+j,16);
           //
           //
           //
           j+=16;i++;
          
   }       
  }
}   
//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
int main()
{
   INT8U i,j,z,d=0;
   DDRA=0xFF;PORTA=0xFF;
   DDRC=0xFF;PORTC=0xFF;
   DDRD=0x02;PORTD=0xFF;
   //
   strcpy((char*)bMsg.Buffer,"點陣演示v1.0...")
   bMsg.Len=strlen((char*)bMsg.Buffer);
   SPI_MasterInit();
   Init_USART()
   sei()
   //
   while()
   {
           for(z=0;z<=bMsg.Len-10;z++)
           {
                    for(d=0;d<10;d++)
                        {
                                for(i=0;i<16;i++)
                                {
                                //
                                    for(j=0;j<5;j++)
                                        {
                                                Serial_Input_595(WORD_Dots_Buffer[z*16+j*32+i+16]);
                                                Serial_Input_595(WORD_Dots_Buffer[z*16+j*32+i]);
                                        }
                                        DI_74HC154();
                                        Parallel_Output_595();
                                        PORTC=(PORTC&0xF)|i;
                                        EN_74HC154();
                                        _delay_ms(2);
                                }                                                                                  
                        }                                                
                }
        }
}                                                                
//-----------------------------------------------------------------
// 串口接收中斷函數
//-----------------------------------------------------------------
ISR (USART_RXC_vect)
{
    //
        INT8U c=UDR;
        //
        if(c=='\r')return;
        //
        if (c=='\n')
        {
        //
        Read_SPI_Word_Dot_Matrix_AND_Convert();
        return;
        }
        //
        if(bMsg.Len<MAX_WORD_COUNT*2)bMsg.Buffer[bMsg.Len++]=c;
        //
        if (bMsg.Len>=2&&bMsg.Buffer[bMsg.Len-1]=='#'
                       &&bMsg.Buffer[bMsg.Len-2]=='#')
        {
             bMsg.Len=0;
        }

}





編譯器提示有2項錯誤,一處警告:
錯誤:Error        1        expected ';' before 'for'        I:\資料\能接收串口信息的帶中英文硬字庫的80×16點陣顯示屏\能接收串口信息的帶中英文硬字庫的80×16點陣顯示屏\AT25F4096.c        100        4        能接收串口信息的帶中英文硬字庫的80×16點陣顯示屏
Error        3        expected ';' before 'SPI_Transmit'        I:\資料\能接收串口信息的帶中英文硬字庫的80×16點陣顯示屏\能接收串口信息的帶中英文硬字庫的80×16點陣顯示屏\AT25F4096.c        118        2        能接收串口信息的帶中英文硬字庫的80×16點陣顯示屏



警告:Warning        2        unused variable 'i' [-Wunused-variable]        I:\資料\能接收串口信息的帶中英文硬字庫的80×16點陣顯示屏\能接收串口信息的帶中英文硬字庫的80×16點陣顯示屏\AT25F4096.c        96        11        能接收串口信息的帶中英文硬字庫的80×16點陣顯示屏




大神們班我看一下有什么問題,可以嗎




搜狗截圖20150223200932.png (206.31 KB, 下載次數: 218)

程序編譯

程序編譯

搜狗截圖20150223201037.png (53.24 KB, 下載次數: 202)

提示信息

提示信息

新建文件夾 (2).zip

10.9 KB, 下載次數: 8

程序附件

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:193550 發表于 2017-4-25 19:54 | 只看該作者
向大神膜拜!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品亚洲精品久久 | 久久久久成人精品免费播放动漫 | 久久久久九九九女人毛片 | 日韩在线欧美 | 免费观看色 | 91九色视频在线 | 欧美成人一区二区三区 | 美女天堂在线 | 久久精品小视频 | 99精品国产一区二区青青牛奶 | 欧美专区在线 | h视频在线免费 | 北条麻妃视频在线观看 | 亚洲高清一区二区三区 | 亚洲国产精品激情在线观看 | 亚洲+变态+欧美+另类+精品 | 在线观看中文字幕一区二区 | 亚洲高清成人在线 | 黄色网址免费在线观看 | www国产亚洲精品 | 亚洲综合精品 | 久久久99国产精品免费 | 亚洲午夜在线 | 欧美一区成人 | 国产高清一区二区三区 | 中文字幕欧美日韩一区 | 国产一区二区a | 日本三级在线网站 | 国产激情第一页 | 亚洲一区二区免费视频 | 国产我和子的乱视频网站 | 精品毛片视频 | 性在线| 久久91av| 日韩欧美亚洲 | 亚洲一区二区网站 | 人人鲁人人莫人人爱精品 | 日本福利在线 | 18成人在线观看 | 国产乱码精品一区二区三区五月婷 | 成人免费网站视频 |