📄 m128.lst
字号:
__text_start:
__start:
0387 EFCF LDI R28,0xFF
0388 E1D0 LDI R29,0x10
0389 BFCD OUT 0x3D,R28
038A BFDE OUT 0x3E,R29
038B 51C0 SUBI R28,0x10
038C 40D0 SBCI R29,0
038D EA0A LDI R16,0xAA
038E 8308 STD Y+0,R16
038F 2400 CLR R0
0390 E0ED LDI R30,0xD
0391 E0F1 LDI R31,1
0392 E011 LDI R17,1
0393 30ED CPI R30,0xD
0394 07F1 CPC R31,R17
0395 F011 BEQ 0x0398
0396 9201 ST R0,Z+
0397 CFFB RJMP 0x0393
0398 8300 STD Z+0,R16
0399 E0E1 LDI R30,1
039A E0F7 LDI R31,7
039B E0A0 LDI R26,0
039C E0B1 LDI R27,1
039D E017 LDI R17,7
039E 30EE CPI R30,0xE
039F 07F1 CPC R31,R17
03A0 F021 BEQ 0x03A5
03A1 95C8 LPM
03A2 9631 ADIW R30,1
03A3 920D ST R0,X+
03A4 CFF9 RJMP 0x039E
03A5 940E0625 CALL _main
_exit:
03A7 CFFF RJMP _exit
FILE: D:\PROTEU~1.7\PROTEU~1.7\JOHU\a___EWTS82\megalcd.c
(0001) /*****************************************************
(0002) http://www.sl.com.cn
(0003) 双龙电子公司----中文LCD演示程序(ICCAVR)
(0004) 作者:詹卫前
(0005) 1、应包含头文件slavr.h
(0006) 2、在工程选项中的Additional Lib中填入slavr
(0007) 使编译器使用附加库文件libslavr.a
(0008) 3、数据线D0~D7接PORTA
(0009) ASK=PORTE.6
(0010) ANSWER=PORTE.7
(0011) RESET=PORTC.3
(0012) *****************************************************/
(0013) #include <iom128v.h>
(0014) //#include <slavr.h>
(0015) /* 定义OCMJ4X8端口 */
(0016) //DATA_PORT=PORTA
(0017) #define data_port PORTA
(0018) //ASK=PORTE.6
(0019) #define ask (PINE&0x40)
(0020) //ANSWER=PORTE.7
(0021) #define set_answer asm("sbi 0x03,7")
(0022) #define clr_answer asm("cbi 0x03,7")
(0023) //RESTE=PORTC.3
(0024) #define set_reset asm("sbi 0x15,3")
(0025) #define clr_reset asm("cbi 0x15,3")
(0026) #define wait asm("nop\n nop")
(0027)
(0028) #define xtal 8
(0029) /*void delay_1ms(void)
(0030) { unsigned int i;
(0031) for(i=1;i<(unsigned int)(xtal*143-2);i++)
(0032) ;
(0033) }
(0034) void delay_ms(unsigned int n)
(0035) {
(0036) unsigned int j=0;
(0037) while(j<n)
(0038) {delay_1ms();
(0039) j++;
(0040) }
(0041) }*/
(0042)
(0043) //extern void delay_ms(unsigned int n);//引用外部函数
(0044) //extern void delay_1ms(void);
(0045) /*-- 双龙公司图标数据 --*/
(0046) /*-- 宽度x高度=32x32 --*/
(0047) const unsigned char sl_ico[128]={
(0048) 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xE0,0x1F,
(0049) 0xFF,0xFF,0x80,0x1F,0xFF,0xFF,0x00,0x3F,0xFF,0xFE,0x01,0xFF,0xFF,0xFC,0x07,0xFF,
(0050) 0xFF,0xF0,0x1F,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xF0,0x7F,0xFF,
(0051) 0xFF,0xE0,0x7F,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xF8,0x0F,0xFF,
(0052) 0xFF,0xFC,0x0F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0x03,0xFF,
(0053) 0xFF,0xFF,0x03,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFF,0x01,0xFF,
(0054) 0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xF8,0x03,0xFF,0xFF,0xE0,0x07,0xFF,
(0055) 0xFE,0x00,0x2F,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
(0056) /*-- ATMEL位图文件数据 --*/
(0057) /*-- 宽度x高度=104x49 --*/
(0058) const unsigned char atmel_bmp[637]={
(0059) 0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x0F,
(0060) 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x1F,0xFF,0xFF,0xFF,
(0061) 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
(0062) 0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
(0063) 0xF8,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,
(0064) 0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0xFF,0xFF,0xFF,
(0065) 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x00,
(0066) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
(0067) 0x00,0x00,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0068) 0x03,0xFC,0x7F,0x9F,0xFF,0xFF,0xF8,0x3F,0xFF,0xE7,0xF8,0x00,0x00,0x03,0xFC,0x7F,
(0069) 0x9F,0xFF,0xFF,0xFC,0x3F,0xFF,0xE7,0xF8,0x00,0x00,0x07,0xFC,0x7F,0x9F,0xFF,0xFF,
(0070) 0xFE,0x3F,0xFF,0xE7,0xF8,0x00,0x00,0x07,0xFC,0x7F,0x9F,0xC7,0xF9,0xFE,0x3F,0xFF,
(0071) 0xE7,0xF8,0x00,0x00,0x0F,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xF8,0x00,
(0072) 0x00,0x0F,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xF8,0x00,0x00,0x1F,0xFC,
(0073) 0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xF8,0x00,0x00,0x1F,0xFC,0x7F,0x9F,0xC7,
(0074) 0xF8,0xFE,0x3F,0xFF,0xE7,0xF8,0x00,0x00,0x3F,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,
(0075) 0x00,0x07,0xF8,0x00,0x00,0x3F,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0x00,0x07,0xF8,
(0076) 0x00,0x00,0x7F,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xF8,0x00,0x00,0x7F,
(0077) 0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xF8,0x00,0x00,0xFF,0xFC,0x7F,0x9F,
(0078) 0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xF8,0x00,0x00,0xFF,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,
(0079) 0x3F,0xFF,0xE7,0xF8,0x00,0x01,0xFF,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,
(0080) 0xF8,0x00,0x01,0xFF,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xF8,0x00,0x03,
(0081) 0xFF,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xF8,0x00,0x03,0xFF,0xFC,0x7F,
(0082) 0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xF8,0x00,0x07,0xFB,0xFC,0x7F,0x9F,0xC7,0xF8,
(0083) 0xFE,0x3F,0x00,0x07,0xF8,0x00,0x07,0xF3,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0x00,
(0084) 0x07,0xF8,0x00,0x0F,0xF3,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xF8,0x00,
(0085) 0x1F,0xE3,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xFF,0xF8,0x1F,0xE3,0xFC,
(0086) 0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xFF,0xF0,0x3F,0xC3,0xFC,0x7F,0x9F,0xC7,
(0087) 0xF8,0xFE,0x3F,0xFF,0xE7,0xFF,0xF0,0x3F,0xC3,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,
(0088) 0xFF,0xE7,0xFF,0xE0,0x7F,0xF3,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xFF,
(0089) 0xE0,0x7F,0xF3,0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xFF,0xC0,0xFF,0xF3,
(0090) 0xFC,0x7F,0x9F,0xC7,0xF8,0xFE,0x3F,0xFF,0xE7,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,
(0091) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0092) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0093) 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0xFF,
(0094) 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,
(0095) 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
(0096) 0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
(0097) 0xFF,0xF8,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,
(0098) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
(0099) /*-- 文字: 和 --*/
(0100) /*-- 楷体_GB231248; 此字体下对应的点阵为:宽x高=64x64 --*/
(0101) const unsigned char hz1[480]={
(0102) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0103) 0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,
(0104) 0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,
(0105) 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x00,
(0106) 0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,
(0107) 0x00,0x03,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x87,0xC0,0x00,0x00,0x00,0x00,
(0108) 0x00,0x18,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,
(0109) 0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
(0110) 0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
(0111) 0x00,0x00,0x03,0x87,0xC0,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xE0,0x00,0x06,0x00,
(0112) 0x00,0x00,0x0F,0xFF,0xC0,0x00,0x1F,0x80,0x00,0x00,0xFF,0xF8,0x00,0x01,0xFF,0xE0,
(0113) 0x00,0x0F,0xFF,0x80,0x7F,0xFF,0xFF,0xF0,0x07,0xFF,0xE7,0x80,0x7F,0xFF,0xFF,0xF0,
(0114) 0x1F,0xFE,0x0F,0x80,0x7F,0x80,0x07,0xE0,0x0F,0xF0,0x1F,0x80,0x3E,0x00,0x07,0xC0,
(0115) 0x07,0x80,0x3F,0x80,0x1E,0x00,0x07,0xC0,0x00,0x00,0x3F,0x80,0x1E,0x00,0x07,0x80,
(0116) 0x00,0x00,0x7F,0x80,0x1E,0x00,0x07,0x80,0x00,0x00,0xFB,0x80,0x0E,0x00,0x07,0x80,
(0117) 0x00,0x00,0xF3,0xF8,0x0E,0x00,0x0F,0x00,0x00,0x01,0xE3,0xFE,0x0E,0x00,0x0F,0x00,
(0118) 0x00,0x03,0xE3,0xBF,0x0E,0x00,0x0F,0x00,0x00,0x07,0xC3,0x9F,0x07,0x00,0x0E,0x00,
(0119) 0x00,0x07,0x83,0x8F,0x07,0x00,0x0E,0x00,0x00,0x0F,0x03,0x83,0x07,0x00,0x1F,0x00,
(0120) 0x00,0x1E,0x03,0x80,0x07,0x1F,0xFF,0x80,0x00,0x3C,0x03,0x80,0x07,0xFF,0xFF,0x80,
(0121) 0x00,0x78,0x03,0x80,0x07,0xFF,0x00,0x00,0x00,0x70,0x03,0x80,0x03,0x00,0x00,0x00,
(0122) 0x00,0xE0,0x03,0x80,0x03,0x00,0x00,0x00,0x01,0xC0,0x03,0x80,0x03,0x00,0x00,0x00,
(0123) 0x03,0x80,0x07,0x80,0x03,0x00,0x00,0x00,0x06,0x00,0x07,0x80,0x01,0x00,0x00,0x00,
(0124) 0x0C,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x10,0x00,0x07,0x80,0x00,0x00,0x00,0x00,
(0125) 0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
(0126) 0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
(0127) 0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
(0128) 0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
(0129) 0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
(0130) 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0131) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
(0132) const unsigned char hz2[132]={
(0133) /*-- 文字: 欢 --*/
(0134) /*-- 楷体_GB231224; 此字体下对应的点阵为:宽x高=32x33 --*/
(0135) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x70,0x00,
(0136) 0x00,0x00,0x70,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xC0,0x00,
(0137) 0x00,0x00,0xC0,0x00,0x00,0x60,0x81,0x00,0x03,0xF1,0x8F,0xC0,0x3E,0x71,0xF9,0xE0,
(0138) 0x10,0x63,0x01,0x80,0x00,0x62,0x03,0x00,0x08,0x64,0xC2,0x00,0x04,0x60,0x60,0x00,
(0139) 0x06,0xC0,0x60,0x00,0x03,0xC0,0x60,0x00,0x01,0xC0,0x60,0x00,0x01,0xC0,0xD0,0x00,
(0140) 0x01,0x60,0xD8,0x00,0x03,0x70,0xCC,0x00,0x06,0x31,0x8C,0x00,0x04,0x11,0x86,0x00,
(0141) 0x08,0x03,0x03,0x80,0x10,0x06,0x03,0xC0,0x20,0x0C,0x01,0xF0,0x00,0x18,0x00,0xFC,
(0142) 0x00,0x20,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0143) 0x00,0x00,0x00,0x00};
(0144) const unsigned char hz3[132]={
(0145) /*-- 文字: 迎 --*/
(0146) /*-- 楷体_GB231224; 此字体下对应的点阵为:宽x高=32x33 --*/
(0147) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0148) 0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x06,0x00,0xC0,0x00,0x07,0x01,0x80,0x00,
(0149) 0x03,0x82,0x01,0xE0,0x01,0x1C,0x3E,0xE0,0x00,0x08,0x10,0x60,0x00,0x0C,0x10,0x60,
(0150) 0x00,0x0C,0x10,0xC0,0x07,0x0C,0x10,0xC0,0x3F,0x8C,0x50,0xC0,0x23,0x0D,0x93,0xC0,
(0151) 0x03,0x0F,0x11,0xC0,0x02,0x0E,0x11,0x80,0x02,0x0C,0x10,0x00,0x02,0x08,0x10,0x00,
(0152) 0x03,0x00,0x10,0x00,0x01,0x00,0x10,0x00,0x01,0x00,0x10,0x00,0x1F,0xC0,0x10,0x00,
(0153) 0x3C,0x3E,0x10,0x00,0x00,0x07,0xE0,0x00,0x00,0x01,0xFF,0xFE,0x00,0x00,0x3F,0xF8,
(0154) 0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0155) 0x00,0x00,0x00,0x00};
(0156) const unsigned char hz4[132]={
(0157) /*-- 文字: 您 --*/
(0158) /*-- 楷体_GB231224; 此字体下对应的点阵为:宽x高=32x33 --*/
(0159) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x30,0x60,0x00,
(0160) 0x00,0x30,0x60,0x00,0x00,0x70,0xE0,0x00,0x00,0x60,0xC1,0x80,0x00,0xC1,0xBF,0xE0,
(0161) 0x00,0xC3,0xE0,0xE0,0x01,0x82,0x31,0x00,0x03,0xC4,0x30,0x00,0x06,0xC8,0x10,0x00,
(0162) 0x0C,0xC0,0x10,0x00,0x08,0xC2,0x13,0x00,0x10,0x82,0x11,0xC0,0x00,0x86,0x10,0xC0,
(0163) 0x00,0x86,0x30,0x40,0x00,0x84,0xB0,0x00,0x00,0x80,0x70,0x00,0x00,0x80,0x30,0x00,
(0164) 0x00,0x00,0x20,0xE0,0x00,0x07,0x00,0x78,0x02,0x03,0xC0,0x18,0x02,0x20,0xC0,0x00,
(0165) 0x06,0x30,0x04,0x00,0x06,0x18,0x02,0x00,0x0C,0x0C,0x03,0x80,0x0C,0x07,0x03,0xC0,
(0166) 0x00,0x03,0xFF,0xC0,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0167) 0x00,0x00,0x00,0x00};
(0168) /* OCMJ4X8LCD初始化 */
(0169) void ocmj_init(void)
(0170) {
(0171) // MCUCR=0;
(0172) DDRA=0xff;
_ocmj_init:
03A8 EF8F LDI R24,0xFF
03A9 BB8A OUT 0x1A,R24
(0173) PORTA=0xff;
03AA BB8B OUT 0x1B,R24
(0174) DDRE=0b10000000;
03AB E880 LDI R24,0x80
03AC B982 OUT 0x02,R24
(0175) PORTE=0xff;
03AD EF8F LDI R24,0xFF
03AE B983 OUT 0x03,R24
(0176) clr_reset;//LCD复位
03AF 98AB CBI 0x15,3
(0177) delay_ms(10);
03B0 E00A LDI R16,0xA
03B1 E010 LDI R17,0
03B2 940E06CC CALL _delay_ms
(0178) set_reset;
03B4 9AAB SBI 0x15,3
(0179) clr_answer;
03B5 981F CBI 0x03,7
(0180) delay_ms(10);
03B6 E00A LDI R16,0xA
03B7 E010 LDI R17,0
03B8 940E06CC CALL _delay_ms
03BA 9508 RET
(0181) }
(0182) /* 写数据到LCD */
(0183) void ocmj_write(unsigned char data)
(0184) {
(0185) while(ask!=0)
_ocmj_write:
data --> R16
03BB 990E SBIC 0x01,6
03BC CFFE RJMP _ocmj_write
(0186) ;
(0187) data_port=data;
03BD BB0B OUT 0x1B,R16
(0188) wait;
03BE 0000 NOP
03BF 0000 NOP
(0189) set_answer;
03C0 9A1F SBI 0x03,7
(0190) wait;
03C1 0000 NOP
03C2 0000 NOP
(0191) while(ask==0)
03C3 9B0E SBIS 0x01,6
03C4 CFFE RJMP 0x03C3
(0192) ;
(0193) clr_answer;
03C5 981F CBI 0x03,7
03C6 9508 RET
_ico_tran:
j --> R20
i --> R14
ico_p --> R10
y --> R12
x --> R22
03C7 940E0733 CALL push_gset5
03C9 2EC2 MOV R12,R18
03CA 2F60 MOV R22,R16
03CB 84AA LDD R10,Y+10
03CC 84BB LDD R11,Y+11
(0194) }
(0195) /* 传送32*32ICO点阵数据到LCD */
(0196) /* x:0~15(字节为单位) y:0~64 */
(0197) /* ico_p:指向图形数据的指针 */
(0198) void ico_tran(unsigned char x,unsigned char y,const unsigned char *ico_p)
(0199) {
(0200) unsigned char i,j;
(0201) x+=4;
03CD 5F6C SUBI R22,0xFC
(0202) for(j=0;j<32;j++)
03CE 2744 CLR R20
03CF C016 RJMP 0x03E6
(0203) {
(0204) for(i=0;i<4;i++)
03D0 24EE CLR R14
03D1 C00E RJMP 0x03E0
(0205) {
(0206) ocmj_write(0xf3);
03D2 EF03 LDI R16,0xF3
03D3 DFE7 RCALL _ocmj_write
(0207) ocmj_write(x);
03D4 2F06 MOV R16,R22
03D5 DFE5 RCALL _ocmj_write
(0208) ocmj_write(y);
03D6 2D0C MOV R16,R12
03D7 DFE3 RCALL _ocmj_write
(0209) ocmj_write(*ico_p);
03D8 01F5 MOVW R30,R10
03D9 9104 LPM R16,0(Z)
03DA DFE0 RCALL _ocmj_write
(0210) ico_p++;
03DB 01C5 MOVW R24,R10
03DC 9601 ADIW R24,1
03DD 015C MOVW R10,R24
(0211) x++;
03DE 9563 INC R22
03DF 94E3 INC R14
03E0 2D8E MOV R24,R14
03E1 3084 CPI R24,4
03E2 F378 BCS 0x03D2
(0212) }
(0213) x-=4;
03E3 5064 SUBI R22,4
(0214) y++;
03E4 94C3 INC R12
03E5 9543 INC R20
03E6 3240 CPI R20,0x20
03E7 F340 BCS 0x03D0
03E8 940E0730 CALL pop_gset5
03EA 9508 RET
_bmp_tran:
j --> R20
i --> R14
bmp_p --> R22
width --> R10
high --> R12
y --> Y+12
x --> Y+10
03EB 940E06DB CALL push_arg4
03ED 940E0733 CALL push_gset5
03EF 84CE LDD R12,Y+14
03F0 88A8 LDD R10,Y+16
03F1 896A LDD R22,Y+18
03F2 897B LDD R23,Y+19
(0215) }
(0216) }
(0217) /* 传送bmp点阵数据到LCD */
(0218) /* x:0~15(字节为单位) y:0~64 */
(0219) /* bmp_p:指向图形数据的指针 */
(0220) /* high:位图高度(点阵行为单位) */
(0221) /* width:位图宽度(以字节为单位)? */
(0222) void bmp_tran(unsigned char x,unsigned char y,unsigned char high,unsigned char width,const unsigned char *bmp_p)
(0223) {
(0224) unsigned char i,j;
(0225) x+=4;
03F3 858A LDD R24,Y+10
03F4 5F8C SUBI R24,0xFC
03F5 878A STD Y+10,R24
(0226) for(j=0;j<high;j++)
03F6 2744 CLR R20
03F7 C01A RJMP 0x0412
(0227) {
(0228) for(i=0;i<width;i++)
03F8 24EE CLR R14
03F9 C00F RJMP 0x0409
(0229) {
(0230) ocmj_write(0xf3);
03FA EF03 LDI R16,0xF3
03FB DFBF RCALL _ocmj_write
(0231) ocmj_write(x);
03FC 850A LDD R16,Y+10
03FD DFBD RCALL _ocmj_write
(0232) ocmj_write(y);
03FE 850C LDD R16,Y+12
03FF DFBB RCALL _ocmj_write
(0233) ocmj_write(*bmp_p);
0400 01FB MOVW R30,R22
0401 9104 LPM R16,0(Z)
0402 DFB8 RCALL _ocmj_write
(0234) bmp_p++;
0403 5F6F SUBI R22,0xFF
0404 4F7F SBCI R23,0xFF
(0235) x++;
0405 840A LDD R0,Y+10
0406 9403 INC R0
0407 860A STD Y+10,R0
0408 94E3 INC R14
0409 14EA CP R14,R10
040A F378 BCS 0x03FA
(0236) }
(0237) x-=width;
040B 840A LDD R0,Y+10
040C 180A SUB R0,R10
040D 860A STD Y+10,R0
(0238) y++;
040E 840C LDD R0,Y+12
040F 9403 INC R0
0410 860C STD Y+12,R0
0411 9543 INC R20
0412 154C CP R20,R12
0413 F320 BCS 0x03F8
0414 940E0730 CALL pop_gset5
0416 9624 ADIW R28,4
0417 9508 RET
_hz_tran:
hz_p --> R20
y --> R22
x --> R10
0418 940E0737 CALL push_gset3
041A 2F62 MOV R22,R18
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -