📄 yj12864.lst
字号:
__text_start:
__start:
024D E5CF LDI R28,0x5F
024E E0D4 LDI R29,4
024F BFCD OUT P3D,R28
0250 BFDE OUT P3E,R29
0251 51C0 SUBI R28,0x10
0252 40D0 SBCI R29,0
0253 EA0A LDI R16,0xAA
0254 8308 STD R16,0+Y
0255 2400 CLR R0
0256 E9EA LDI R30,0x9A
0257 E0F0 LDI R31,0
0258 E010 LDI R17,0
0259 39EA CPI R30,0x9A
025A 07F1 CPC R31,R17
025B F011 BEQ 0x025E
025C 9201 ST R0,Z+
025D CFFB RJMP 0x0259
025E 8300 STD R16,0+Z
025F E6E0 LDI R30,0x60
0260 E0F4 LDI R31,4
0261 E6A0 LDI R26,0x60
0262 E0B0 LDI R27,0
0263 E014 LDI R17,4
0264 39EA CPI R30,0x9A
0265 07F1 CPC R31,R17
0266 F021 BEQ 0x026B
0267 95C8 LPM
0268 9631 ADIW R30,1
0269 920D ST R0,X+
026A CFF9 RJMP 0x0264
026B 940E03D4 CALL _main
_exit:
026D CFFF RJMP _exit
_Delayus:
i --> R20
US --> R22
026E 940E0426 CALL push_gset2
0270 01B8 MOVW R22,R16
FILE: C:\icc\include\AVR_PQ1A.h
(0001) /*******************************************
(0002) 文件:AVR_PQ1A.H
(0003) 功能:定义一些AVR_PQ1A开发板上应用程序用到的常量
(0004) /******************************************/
(0005)
(0006) #include <iom16v.h> //包含型号头文件
(0007) #include <macros.h> //包含"位"操作头文件
(0008)
(0009) /******************数据类型宏定义******************/
(0010) #define uchar unsigned char
(0011) #define uint unsigned int
(0012)
(0013) /******************数码管和LED常量******************/
(0014) #define LEDLK PA2 //LED锁存器控制端
(0015) #define SEGLK PA3 //数码管段选锁存器控制端
(0016) #define BITLK PA4 //数码管位选锁存器控制端
(0017)
(0018) #define TRUE 1
(0019) #define FALSE 0
(0020) #define ALLLED 0XFF
(0021) /*******************************************
(0022) 函数名称: Delayus
(0023) 功 能: 延时指定微秒(8M晶振)
(0024) 参 数: US--延时的微秒数(大约,不是很精确,MS越大越准确)
(0025) 返回值 : 无
(0026) /********************************************/
(0027) void Delayus(uint US)
(0028) {
(0029) uint i;
(0030) US=US*5/4; //5/4是在8MHz晶振下,通过软件仿真反复实验得到的数值
0271 E005 LDI R16,5
0272 E010 LDI R17,0
0273 019B MOVW R18,R22
0274 940E03FF CALL empy16s
0276 01B8 MOVW R22,R16
0277 9576 LSR R23
0278 9567 ROR R22
0279 9576 LSR R23
027A 9567 ROR R22
(0031) for( i=0;i<US;i++);
027B 2744 CLR R20
027C 2755 CLR R21
027D C002 RJMP 0x0280
027E 5F4F SUBI R20,0xFF
027F 4F5F SBCI R21,0xFF
0280 1746 CP R20,R22
0281 0757 CPC R21,R23
0282 F3D8 BCS 0x027E
(0032) }
0283 940E0432 CALL pop_gset2
0285 9508 RET
_Delayms:
i --> R20
j --> R22
MS --> R16
0286 940E0426 CALL push_gset2
(0033) /*******************************************
(0034) 函数名称: Delayms
(0035) 功 能: 延时指定毫秒(8M晶振)
(0036) 参 数: MS--延时的毫秒数
(0037) 返回值 : 无
(0038) /********************************************/
(0039) void Delayms(uint MS)
(0040) {
(0041) uint i,j;
(0042) for( i=0;i<MS;i++)
0288 2744 CLR R20
0289 2755 CLR R21
028A C00B RJMP 0x0296
(0043) for(j=0;j<1141;j++); //1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
028B 2766 CLR R22
028C 2777 CLR R23
028D C002 RJMP 0x0290
028E 5F6F SUBI R22,0xFF
028F 4F7F SBCI R23,0xFF
0290 3765 CPI R22,0x75
0291 E0E4 LDI R30,4
0292 077E CPC R23,R30
0293 F3D0 BCS 0x028E
0294 5F4F SUBI R20,0xFF
0295 4F5F SBCI R21,0xFF
0296 1740 CP R20,R16
0297 0751 CPC R21,R17
0298 F390 BCS 0x028B
(0044) }
0299 940E0432 CALL pop_gset2
029B 9508 RET
(0045) /*******************************************
(0046) 函数名称: Board_init
(0047) 功 能: 初始化实验板,关闭全部功能
(0048) 参 数: 无
(0049) 返回值 : 无
(0050) /********************************************/
(0051) void Board_init(void)
(0052) {
(0053) DDRA=0xFF; //将四个IO口全部配置为输出
_Board_init:
029C EF8F LDI R24,0xFF
029D BB8A OUT P1A,R24
(0054) DDRB=0xFF;
029E BB87 OUT P17,R24
(0055) DDRC=0xFF;
029F BB84 OUT P14,R24
(0056) DDRD=0xFF;
02A0 BB81 OUT P11,R24
(0057)
(0058) SPCR=0x00; //还原SPI口,使其为正常端口
02A1 2422 CLR R2
02A2 B82D OUT P0D,R2
(0059)
(0060) PORTA|=BIT(PA6);//(BEEP)关闭蜂鸣器
02A3 9ADE SBI P1B,6
(0061) PORTC&=~BIT(PC6); //(RELAY)初始化继电器为常闭连接状态
02A4 98AE CBI P15,6
(0062) PORTA&=~BIT(PA1); //关闭SPI总线DA
02A5 98D9 CBI P1B,1
(0063) PORTB=0xFF; //关闭LED
02A6 BB88 OUT P18,R24
(0064) PORTA|=BIT(LEDLK); //锁存数据,使LED熄灭
02A7 9ADA SBI P1B,2
(0065) Delayus(5);
02A8 E005 LDI R16,5
02A9 E010 LDI R17,0
02AA DFC3 RCALL _Delayus
(0066) PORTA&=~BIT(LEDLK);
02AB 98DA CBI P1B,2
(0067)
(0068) PORTB=0x00; //输出段选
02AC 2422 CLR R2
02AD BA28 OUT P18,R2
(0069) PORTA|=BIT(SEGLK);
02AE 9ADB SBI P1B,3
(0070) Delayus(50);
02AF E302 LDI R16,0x32
02B0 E010 LDI R17,0
02B1 DFBC RCALL _Delayus
(0071) PORTA&=~BIT(SEGLK);
02B2 98DB CBI P1B,3
(0072)
(0073) PORTB=0xFF; //输出位选
02B3 EF8F LDI R24,0xFF
02B4 BB88 OUT P18,R24
(0074) PORTA|=BIT(BITLK);
02B5 9ADC SBI P1B,4
(0075) Delayus(50);
02B6 E302 LDI R16,0x32
02B7 E010 LDI R17,0
02B8 DFB5 RCALL _Delayus
(0076) PORTA&=~BIT(BITLK);
02B9 98DC CBI P1B,4
(0077)
(0078) PORTD=0xFF;
02BA EF8F LDI R24,0xFF
02BB BB82 OUT P12,R24
(0079) PORTA|=BIT(PA7);
02BC 9ADF SBI P1B,7
(0080) Delayus(50);
02BD E302 LDI R16,0x32
02BE E010 LDI R17,0
02BF DFAE RCALL _Delayus
(0081) PORTA&=~BIT(PA7);
02C0 98DF CBI P1B,7
(0082)
(0083)
(0084) }
02C1 9508 RET
FILE: C:\icc\examples.avr\AVR_PQ1A_DEMO\4_12864\YJ12864.C
(0001) /*******************************************
(0002) 文件:YJ12864.C
(0003) 环境:编译为ICC AVR6.25A,仿真为AVR Studio4.10
(0004) 硬件:ATMEGA16芯片
(0005) 日期:2006年12月10日
(0006) 功能:驱动开发板上的12864液晶
(0007) 备注:参考《AVR系列单片机C语言编程与应用实例》(清华大学出版社)
(0008) /******************************************/
(0009) #include <iom16v.h> //包含型号头文件
(0010) #include <macros.h> //包含"位"操作头文件
(0011) #include <stdio.h> //标准输入输出头文件
(0012) #include <AVR_PQ1A.h> //包含自定义常量头文件
(0013)
(0014) #pragma data:code //以下是字模工具取出的图片数组
(0015) const uchar GDRAM[1024]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0016) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0017) 0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,
(0018) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0019) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0020) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0021) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0022) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0023) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0024) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0025) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0026) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0027) 0x20,0x7F,0xFF,0xC0,0xFF,0xFF,0x80,0xFF,0xFF,0x80,0xFF,0xFF,0x83,0xFF,0xFE,0x04,
(0028) 0x20,0x40,0x00,0x40,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x82,0x00,0x02,0x04,
(0029) 0x20,0x40,0x00,0x40,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x82,0x00,0x02,0x04,
(0030) 0x20,0x40,0x00,0x40,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x82,0x00,0x02,0x04,
(0031) 0x20,0x40,0x00,0x40,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x82,0x00,0x02,0x04,
(0032) 0x20,0x40,0x00,0x40,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x82,0x00,0x02,0x04,
(0033) 0x20,0x40,0x00,0x40,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x82,0x00,0x02,0x04,
(0034) 0x20,0x40,0x00,0x40,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x82,0x00,0x02,0x04,
(0035) 0x20,0x40,0x00,0x40,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x82,0x00,0x02,0x04,
(0036) 0x20,0x40,0x00,0x40,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x82,0x00,0x02,0x04,
(0037) 0x20,0x7F,0xFF,0xC0,0xFF,0xFF,0x80,0xFF,0xFF,0x80,0xFF,0xFF,0x83,0xFF,0xFE,0x04,
(0038) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0039) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0040) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0041) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0042) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0043) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0044) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0045) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0046) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0047) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0048) 0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,
(0049) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0050) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0051) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0052) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0053) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0054) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0055) 0x20,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0056) 0x20,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0057) 0x20,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0058) 0x2F,0xFF,0xFF,0xFF,0xC1,0xF8,0x7F,0xBF,0xC1,0xE3,0x9C,0x00,0x78,0x1E,0x3F,0xC4,
(0059) 0x26,0xD9,0xB6,0x6D,0x80,0x60,0x33,0x1B,0x63,0x31,0x8C,0x00,0xCC,0x33,0x1B,0x64,
(0060) 0x26,0xD9,0xB6,0x6D,0x80,0x60,0x1E,0x1B,0x66,0x31,0x8C,0x01,0x8C,0x61,0x9B,0x64,
(0061) 0x27,0xF9,0xFE,0x7F,0x80,0x60,0x0C,0x1B,0x66,0x01,0x8C,0x01,0x80,0x61,0x9B,0x64,
(0062) 0x27,0xF9,0xFE,0x7F,0x80,0x60,0x1E,0x1B,0x66,0x01,0x8C,0x01,0x80,0x61,0x9B,0x64,
(0063) 0x23,0x30,0xCC,0x33,0x1C,0x6C,0x33,0x1B,0x63,0x31,0x9C,0x70,0xCC,0x33,0x1B,0x64,
(0064) 0x23,0x30,0xCC,0x33,0x1C,0x78,0x7F,0xBF,0xF1,0xE0,0xFC,0x70,0x78,0x1E,0x3F,0xF4,
(0065) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0066) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0067) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0068) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0069) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0070) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0071) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0072) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0073) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0074) 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
(0075) 0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,
(0076) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0077) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0078) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
(0079) #pragma data:data
(0080)
(0081) /*******************************************
(0082) 函数名称: LCD12864_portini
(0083) 功 能: 初始化12864液晶用到的IO口
(0084) 参 数: 无
(0085) 返回值 : 无
(0086) /********************************************/
(0087) void LCD12864_portini(void)
(0088) {
(0089) LCDb_CTRL_DDR |= BIT(LCDb_RS)|BIT(LCDb_RW)|BIT(LCDb_E)|BIT(LCDb_RST);//配置控制管脚为输出
_LCD12864_portini:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -