📄 12864_example.lst
字号:
__text_start:
__start:
022F E5CF LDI R28,0x5F
0230 E0D4 LDI R29,4
0231 BFCD OUT 0x3D,R28
0232 BFDE OUT 0x3E,R29
0233 51C0 SUBI R28,0x10
0234 40D0 SBCI R29,0
0235 EA0A LDI R16,0xAA
0236 8308 STD Y+0,R16
0237 2400 CLR R0
0238 E6E9 LDI R30,0x69
0239 E0F0 LDI R31,0
023A E010 LDI R17,0
023B 38E1 CPI R30,0x81
023C 07F1 CPC R31,R17
023D F011 BEQ 0x0240
023E 9201 ST R0,Z+
023F CFFB RJMP 0x023B
0240 8300 STD Z+0,R16
0241 E5E4 LDI R30,0x54
0242 E0F4 LDI R31,4
0243 E6A0 LDI R26,0x60
0244 E0B0 LDI R27,0
0245 E014 LDI R17,4
0246 35ED CPI R30,0x5D
0247 07F1 CPC R31,R17
0248 F021 BEQ 0x024D
0249 95C8 LPM
024A 9631 ADIW R30,1
024B 920D ST R0,X+
024C CFF9 RJMP 0x0246
024D 940E04E5 CALL _main
_exit:
024F CFFF RJMP _exit
FILE: G:\单片机\源程序\液晶12864驱动\CGM12864\LCD12864_Example\RD_ATMega16L.h
(0001) #ifndef _Use_AdvancedPortCommand
(0002) # define _Use_AdvancedPortCommand
(0003) /***********************************************************
(0004) * 支持库名: ATMage16L Bit Driver *
(0005) * 源文件: RD_ATMage162L.h *
(0006) * 版本: v1.3 *
(0007) * 说明: AVR 通用位操作支持库 *
(0008) * *
(0009) * 作者: 傻孩子 *
(0010) * 日期: 2005年10月8日 *
(0011) * 修改: 傻孩子 *
(0012) * 修改时间: 2005年11月28日 *
(0013) * *
(0014) * [说明] *
(0015) * 1、使用前务必在端口初始化前加入PORTDefine()。 *
(0016) ***********************************************************/
(0017) # include <iom16v.h>
(0018) # include <macros.h>
(0019)
(0020)
(0021) /****************************
(0022) * 资源说明 *
(0023) ****************************/
(0024) # define PAInUse 0xff
(0025) # define PBInUse 0xff
(0026) # define PCInUse 0xff
(0027) # define PDInUse 0xff
(0028) # define PEInUse 0x00
(0029) # define PFInUse 0x00
(0030) # define PGInUse 0x00
(0031) # define PHInUse 0x00
(0032) # define PIInUse 0x00
(0033) # define PJInUse 0x00
(0034) # define PKInUse 0x00
(0035) # define PLInUse 0x00
(0036) # define PMInUse 0x00
(0037) # define PNInUse 0x00
(0038) # define POInUse 0x00
(0039) # define PPInUse 0x00
(0040) # define PQInUse 0x00
(0041) # define PRInUse 0x00
(0042) # define PSInUse 0x00
(0043) # define PTInUse 0x00
(0044) # define PUInUse 0x00
(0045) # define PVInUse 0x00
(0046) # define PWInUse 0x00
(0047) # define PXInUse 0x00
(0048) # define PYInUse 0x00
(0049) # define PZInUse 0x00
(0050)
(0051) /****************************
(0052) * 端口宏定义 *
(0053) ****************************/
(0054)
(0055) /****************************
(0056) * 高级端口宏定义 *
(0057) ****************************/
(0058) struct PORTBIT
(0059) {
(0060) unsigned Bit0:1;
(0061) unsigned Bit1:1;
(0062) unsigned Bit2:1;
(0063) unsigned Bit3:1;
(0064) unsigned Bit4:1;
(0065) unsigned Bit5:1;
(0066) unsigned Bit6:1;
(0067) unsigned Bit7:1;
(0068) }*PORTA_BIT,*PORTB_BIT,*PORTC_BIT,*PORTD_BIT,
(0069) *DDRA_BIT,*DDRB_BIT,*DDRC_BIT,*DDRD_BIT,
(0070) *PINA_BIT,*PINB_BIT,*PINC_BIT,*PIND_BIT;
(0071)
(0072) /***********************************************************
(0073) * 函数说明:高级端口扩展初始化 *
(0074) ***********************************************************/
(0075) void PORTDefine(void)
(0076) {
(0077) PORTA_BIT = ( struct PORTBIT *)0x3b;
_PORTDefine:
0250 E38B LDI R24,0x3B
0251 E090 LDI R25,0
0252 93900080 STS PORTA_BIT+1,R25
0254 9380007F STS PORTA_BIT,R24
(0078) PORTB_BIT = ( struct PORTBIT *)0x38;
0256 E388 LDI R24,0x38
0257 9390007E STS PORTB_BIT+1,R25
0259 9380007D STS PORTB_BIT,R24
(0079) PORTC_BIT = ( struct PORTBIT *)0x35;
025B E385 LDI R24,0x35
025C 9390007C STS PORTC_BIT+1,R25
025E 9380007B STS PORTC_BIT,R24
(0080) PORTD_BIT = ( struct PORTBIT *)0x32;
0260 E382 LDI R24,0x32
0261 9390007A STS PORTD_BIT+1,R25
0263 93800079 STS PORTD_BIT,R24
(0081)
(0082) DDRA_BIT = ( struct PORTBIT *)0x3A;
0265 E38A LDI R24,0x3A
0266 93900078 STS DDRA_BIT+1,R25
0268 93800077 STS DDRA_BIT,R24
(0083) DDRB_BIT = ( struct PORTBIT *)0x37;
026A E387 LDI R24,0x37
026B 93900076 STS DDRB_BIT+1,R25
026D 93800075 STS DDRB_BIT,R24
(0084) DDRC_BIT = ( struct PORTBIT *)0x34;
026F E384 LDI R24,0x34
0270 93900074 STS DDRC_BIT+1,R25
0272 93800073 STS DDRC_BIT,R24
(0085) DDRD_BIT = ( struct PORTBIT *)0x31;
0274 E381 LDI R24,0x31
0275 93900072 STS DDRD_BIT+1,R25
0277 93800071 STS DDRD_BIT,R24
(0086)
(0087) PINA_BIT = ( struct PORTBIT *)0x39;
0279 E389 LDI R24,0x39
027A 93900070 STS PINA_BIT+1,R25
027C 9380006F STS PINA_BIT,R24
(0088) PINB_BIT = ( struct PORTBIT *)0x36;
027E E386 LDI R24,0x36
027F 9390006E STS PINB_BIT+1,R25
0281 9380006D STS PINB_BIT,R24
(0089) PINC_BIT = ( struct PORTBIT *)0x33;
0283 E383 LDI R24,0x33
0284 9390006C STS PINC_BIT+1,R25
0286 9380006B STS PINC_BIT,R24
(0090) PIND_BIT = ( struct PORTBIT *)0x30;
0288 E380 LDI R24,0x30
0289 9390006A STS PIND_BIT+1,R25
028B 93800069 STS PIND_BIT,R24
028D 9508 RET
_setBIT:
BIT --> R20
028E 940E053F CALL push_gset1
0290 2F40 MOV R20,R16
FILE: G:\单片机\源程序\液晶12864驱动\CGM12864\LCD12864_Example\SerialToCollateral.h
(0001) #ifndef _Use_SerialToCollateral
(0002) # define _Use_SerialToCollateral
(0003) /********************************************************
(0004) * 函数库说明:串行输出转为并行输出基本函数库 *
(0005) * 版本: v1.0 *
(0006) * 作者: 傻孩子 *
(0007) * 日期: 2006年1月7日 *
(0008) * 修改: 傻孩子 *
(0009) * 修改日期: 2006年2月09日 *
(0010) * *
(0011) * [说明] *
(0012) * 1、该头文件通过3根线连接到595实现对级联的 *
(0013) * 595进行驱动,达到扩展输出端口的作用。 *
(0014) * 2、基本支持单595和2个595级联的情况,并允许 *
(0015) * 在头文件外部自定义多个595级联的情况。当 *
(0016) * 使用外部自定义多级595连接时,只需要定义 *
(0017) * 相应的位段和虚拟端口变量即可。支持位操作 *
(0018) * 3、使用的时候,可以通过查询扫描的方式,也 *
(0019) * 可以在修改虚拟端口值以后通过调用函数 *
(0020) * refreshVirtualPORT()来即时刷新(推荐)。 *
(0021) ********************************************************/
(0022)
(0023) /***********************
(0024) * 系 统 宏 定 义 *
(0025) ***********************/
(0026)
(0027) /*---------------------*
(0028) * 常 数 宏 定 义 *
(0029) *---------------------*/
(0030) #ifndef True
(0031) # define True 0x01
(0032) #endif
(0033) #ifndef False
(0034) # define False 0x00
(0035) #endif
(0036) #ifndef NULL
(0037) # define NULL 0x00
(0038) #endif
(0039) #ifndef Enable
(0040) # define Enable 0x00
(0041) #endif
(0042) #ifndef Disable
(0043) # define Disable 0x01
(0044) #endif
(0045)
(0046) #ifdef _Use_8Bit_VitualPORT
(0047) struct VirtualPORT
(0048) {
(0049) unsigned BIT0:1;
(0050) unsigned BIT1:1;
(0051) unsigned BIT2:1;
(0052) unsigned BIT3:1;
(0053) unsigned BIT4:1;
(0054) unsigned BIT5:1;
(0055) unsigned BIT6:1;
(0056) unsigned BIT7:1;
(0057) };
(0058)
(0059) # define VIRTUAL_BIT_COUNT 8
(0060) #endif
(0061) #ifdef _Use_16Bit_VitualPORT
(0062) struct VirtualPORT
(0063) {
(0064) unsigned BIT0:1;
(0065) unsigned BIT1:1;
(0066) unsigned BIT2:1;
(0067) unsigned BIT3:1;
(0068) unsigned BIT4:1;
(0069) unsigned BIT5:1;
(0070) unsigned BIT6:1;
(0071) unsigned BIT7:1;
(0072)
(0073) unsigned BIT8:1;
(0074) unsigned BIT9:1;
(0075) unsigned BIT10:1;
(0076) unsigned BIT11:1;
(0077) unsigned BIT12:1;
(0078) unsigned BIT13:1;
(0079) unsigned BIT14:1;
(0080) unsigned BIT15:1;
(0081) };
(0082) # define VIRTUAL_BIT_COUNT 16
(0083) #endif
(0084)
(0085) /*---------------------*
(0086) * 动 作 宏 定 义 *
(0087) *---------------------*/
(0088) #ifndef VRCK
(0089) # define VRCK _PB1
(0090) #endif
(0091) #ifndef VSCK
(0092) # define VSCK _PB2
(0093) #endif
(0094) #ifndef VSI
(0095) # define VSI _PB3
(0096) #endif
(0097) /***********************
(0098) * 全局变量声明区 *
(0099) ***********************/
(0100) #if (VIRTUAL_BIT_COUNT == 8)
(0101) char VPORT = 0;
(0102)
(0103) # define PV0 (*VPORTBit).BIT0
(0104) # define PV1 (*VPORTBit).BIT1
(0105) # define PV2 (*VPORTBit).BIT2
(0106) # define PV3 (*VPORTBit).BIT3
(0107) # define PV4 (*VPORTBit).BIT4
(0108) # define PV5 (*VPORTBit).BIT5
(0109) # define PV6 (*VPORTBit).BIT6
(0110) # define PV7 (*VPORTBit).BIT7
(0111)
(0112) #endif
(0113) #if (VIRTUAL_BIT_COUNT == 16)
(0114) unsigned int VPORT = 0;
(0115)
(0116) # define PV0 (*VPORTBit).BIT0
(0117) # define PV1 (*VPORTBit).BIT1
(0118) # define PV2 (*VPORTBit).BIT2
(0119) # define PV3 (*VPORTBit).BIT3
(0120) # define PV4 (*VPORTBit).BIT4
(0121) # define PV5 (*VPORTBit).BIT5
(0122) # define PV6 (*VPORTBit).BIT6
(0123) # define PV7 (*VPORTBit).BIT7
(0124)
(0125) # define PV8 (*VPORTBit).BIT8
(0126) # define PV9 (*VPORTBit).BIT9
(0127) # define PV10 (*VPORTBit).BIT10
(0128) # define PV11 (*VPORTBit).BIT11
(0129) # define PV12 (*VPORTBit).BIT12
(0130) # define PV13 (*VPORTBit).BIT13
(0131) # define PV14 (*VPORTBit).BIT14
(0132) # define PV15 (*VPORTBit).BIT15
(0133)
(0134) #endif
(0135) struct VirtualPORT *VPORTBit = (struct VirtualPORT *)&(VPORT);
(0136)
(0137)
(0138)
(0139) char IfPortChange = False;
(0140) /***********************
(0141) * 系统函数声明区 *
(0142) ***********************/
(0143) void refreshVirtualPORT(void);
(0144) void sendBITS(char Data);
(0145) void VirtualPORTProccess(void);
(0146) char setBIT(char BIT);
(0147) char clearBIT(char BIT);
(0148)
(0149) /********************************************************
(0150) * 函数说明:虚拟端口置位函数 *
(0151) * 输入: 位编号 *
(0152) * 输出: 操作是否成功 *
(0153) ********************************************************/
(0154) char setBIT(char BIT)
(0155) {
(0156) if (BIT >= VIRTUAL_BIT_COUNT)
0291 3140 CPI R20,0x10
0292 F010 BCS 0x0295
(0157) {
(0158) return False;
0293 2700 CLR R16
0294 C015 RJMP 0x02AA
(0159) }
(0160)
(0161) VPORT |= 1<<BIT;
0295 2F24 MOV R18,R20
0296 2733 CLR R19
0297 E001 LDI R16,1
0298 E010 LDI R17,0
0299 940E0556 CALL lsl16
029B 90200060 LDS R2,VPORT
029D 90300061 LDS R3,VPORT+1
029F 2A20 OR R2,R16
02A0 2A31 OR R3,R17
02A1 92300061 STS VPORT+1,R3
02A3 92200060 STS VPORT,R2
(0162) IfPortChange = True;
02A5 E081 LDI R24,1
02A6 93800064 STS IfPortChange,R24
(0163) VirtualPORTProccess(); //刷新端口
02A8 D026 RCALL _VirtualPORTProccess
(0164) return True;
02A9 E001 LDI R16,1
02AA 940E0542 CALL pop_gset1
02AC 9508 RET
_clearBIT:
BIT --> R20
02AD 940E053F CALL push_gset1
02AF 2F40 MOV R20,R16
(0165) }
(0166)
(0167) /********************************************************
(0168) * 函数说明:虚拟端口清零函数 *
(0169) * 输入: 位编号 *
(0170) * 输出: 操作是否成功 *
(0171) ********************************************************/
(0172) char clearBIT(char BIT)
(0173) {
(0174) if (BIT >= VIRTUAL_BIT_COUNT)
02B0 3140 CPI R20,0x10
02B1 F010 BCS 0x02B4
(0175) {
(0176) return False;
02B2 2700 CLR R16
02B3 C018 RJMP 0x02CC
(0177) }
(0178)
(0179) VPORT &= ~(1<<BIT);
02B4 2F24 MOV R18,R20
02B5 2733 CLR R19
02B6 E001 LDI R16,1
02B7 E010 LDI R17,0
02B8 940E0556 CALL lsl16
02BA 0118 MOVW R2,R16
02BB 9420 COM R2
02BC 9430 COM R3
02BD 90400060 LDS R4,VPORT
02BF 90500061 LDS R5,VPORT+1
02C1 2042 AND R4,R2
02C2 2053 AND R5,R3
02C3 92500061 STS VPORT+1,R5
02C5 92400060 STS VPORT,R4
(0180) IfPortChange = True;
02C7 E081 LDI R24,1
02C8 93800064 STS IfPortChange,R24
(0181) VirtualPORTProccess(); //刷新端口
02CA D004 RCALL _VirtualPORTProccess
(0182) return True;
02CB E001 LDI R16,1
02CC 940E0542 CALL pop_gset1
02CE 9508 RET
(0183) }
(0184)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -