原程序开发环境: AVRStudio 现在改为IAR for AVR 出现7个错误 3个警告 敬请老师给予指导 - #include <ioavr.h>
- #include "delay.h"
- #define INT8U unsigned char
- #define INT16U unsigned int
- #define _BV(bit) (1 << (bit))
- //按键定义
- #define K1_DOWN() ((PINB & _BV(PB1)) == 0x00) //前翻
- #define K2_DOWN() ((PINB & _BV(PB4)) == 0x00) //后翻
- #define K3_DOWN() ((PINB & _BV(PB7)) == 0x00) //自动刷新
- //总画面数及当前画面页索引
- INT8U MaxPage = 7, CurrentPageIndex = 0;
- //控制是否继续显示下一幅图像的标识变量
- enum {FALSE,TRUE} ShowNext = FALSE;
- //12864LCD显示与屏幕测试相关函数
- extern void LCD_Initialize();
- extern void Ful1_Disp_ON_OFF(INT8U k);
- extern void Disp_Checker(INT8U k);
- extern void Disp_Frame();
- extern void Disp_R();
- extern void Disp_Clip();
- extern void Disp_Picture();
- //-----------------------------------------------------------------
- // 按键扫描
- //-----------------------------------------------------------------
- void Scan_KEYs()
- {
- if(K3_DOWN()) //开关合上时自动刷新
- {
- ShowNext = TRUE;
- if(++CurrentPageIndex == MaxPage) CurrentPageIndex = 0;
- _delay_ms(200);
- }
- else if(K1_DOWN()) //前翻
- {
- ShowNext = TRUE;
- if(CurrentPageIndex > 0)
- CurrentPageIndex--;
- else
- CurrentPageIndex = MaxPage-1;
- }
- else if(K2_DOWN()) //后翻
- {
- ShowNext = TRUE;
- if(++CurrentPageIndex == MaxPage) CurrentPageIndex = 0;
- }
- PORTA = ~_BV(CurrentPageIndex); //刷新指示LED
- }
- //-----------------------------------------------------------------
- // 主程序
- //-----------------------------------------------------------------
- int main()
- {
- DDRA = 0xFF; PORTA = 0xFF; //配置端口
- DDRB = 0x00; PORTB = 0xFF;
- DDRD = 0xFF;
- LCD_Initialize(); _delay_ms(5); //液晶初始化
- Full_Disp_ON_OFF(0); //全屏不显示 警告
- _delay_ms(200);
- Full_Disp_ON_OFF(1); //全显(形成全黑色屏幕)
- while(1)
- {
- Scan_KEYs(); //键盘扫描
- if(ShowNext == TRUE)
- {
- switch(CurrentPageIndex);
- {
- case 0:Disp_R(); break; //R字符平铺画面 错误
- case 1:Disp_Frame(); break; //方框 错误
- case 2:Ful1_Disp_ON_OFF(1); break; //全显(形成全黑色屏幕) 错误
- case 3:Ful1_Disp_ON_OFF(0); break; //全不显(底色屏幕) 错误
- case 4:Disp_Checker(1); break; //正显棋板 错误
- case 5:Disp_Checker(0); break; //反显棋板 错误
- case 6:Disp_Picture(); break; //案例文件夹下的一幅图片 错误
- }
- ShowNext = FALSE; //警告
- }
- }
- }
- //-----------------------------------------------------------------
- // 显示案例文件夹下的一幅图片(代码与上一函数相同,区别仅在于使用了不同的点阵数组)
- //-----------------------------------------------------------------
- void Disp_Picture()
- {
- INT8U i,j;
- Write_Command(LINE); //设置显示起始行地址
- for(i=0; i<8; i++) //全屏共输出8页
- {
- Write_Command(PAGE+i); //选择第i页
- Write_Command(COL_H4); //设置列地址高4位
- Write_Command(COL_L4); //设置列地址低4位
- //用pgm_read_byte从程序Flash空间中读取点阵数据
- for(j=0; j<128; j++) //每页显示128列,列地址自动递增
- Write_Data(pgm_read_byte(ICONs_Picture+i * 128+j)); //警告
- }
- }
|