📄 12864_serial.lss
字号:
CLR_SCK;
91e: 96 98 cbi 0x12, 6 ; 18
if(SID)
920: 80 b3 in r24, 0x10 ; 16
922: 82 95 swap r24
924: 86 95 lsr r24
926: 87 70 andi r24, 0x07 ; 7
928: 80 fd sbrc r24, 0
temp1++;
92a: 9f 5f subi r25, 0xFF ; 255
92c: 21 50 subi r18, 0x01 ; 1
92e: 27 ff sbrs r18, 7
930: f3 cf rjmp .-26 ; 0x918 <ReceiveByte+0x8>
932: 27 e0 ldi r18, 0x07 ; 7
}
for(i=0;i<8;i++)
{
temp2=temp2<<1;
934: 33 0f add r19, r19
CLR_SCK;
936: 96 98 cbi 0x12, 6 ; 18
SET_SCK;
938: 96 9a sbi 0x12, 6 ; 18
CLR_SCK;
93a: 96 98 cbi 0x12, 6 ; 18
if(SID)
93c: 80 b3 in r24, 0x10 ; 16
93e: 82 95 swap r24
940: 86 95 lsr r24
942: 87 70 andi r24, 0x07 ; 7
944: 80 fd sbrc r24, 0
temp2++;
946: 3f 5f subi r19, 0xFF ; 255
948: 21 50 subi r18, 0x01 ; 1
94a: 27 ff sbrs r18, 7
94c: f3 cf rjmp .-26 ; 0x934 <ReceiveByte+0x24>
}
return ((0xf0&temp1)+(0x0f&temp2));
94e: 90 7f andi r25, 0xF0 ; 240
950: 3f 70 andi r19, 0x0F ; 15
952: 93 0f add r25, r19
}
954: 89 2f mov r24, r25
956: 99 27 eor r25, r25
958: 08 95 ret
0000095a <CheckBusy>:
/******************************************************************************************
* 函数名称 :CheckBusy
* 功能描述 :
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void CheckBusy( void )
{
do SendByte(0xfc); //11111,RW(1),RS(0),0
95a: 8c ef ldi r24, 0xFC ; 252
95c: 0e 94 79 04 call 0x8f2 <SendByte>
960: 0e 94 88 04 call 0x910 <ReceiveByte>
964: 88 23 and r24, r24
966: cc f3 brlt .-14 ; 0x95a <CheckBusy>
968: 08 95 ret
0000096a <WriteCommand>:
while(0x80&ReceiveByte()); //BF(.7)=1 Busy
}
/******************************************************************************************
* 函数名称 :WriteCommand
* 功能描述 :写命令
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void WriteCommand(uchar Cbyte )
{
96a: 0f 93 push r16
96c: 1f 93 push r17
96e: 08 2f mov r16, r24
CheckBusy();
970: 0e 94 ad 04 call 0x95a <CheckBusy>
SendByte(0xf8); //11111,RW(0),RS(0),0
974: 88 ef ldi r24, 0xF8 ; 248
976: 0e 94 79 04 call 0x8f2 <SendByte>
//SendByte(Cbyte);
SendByte(0xf0&Cbyte); //高四位
97a: 10 ef ldi r17, 0xF0 ; 240
97c: 80 2f mov r24, r16
97e: 81 23 and r24, r17
980: 0e 94 79 04 call 0x8f2 <SendByte>
SendByte(0xf0&Cbyte<<4);//低四位(先执行<<)
984: 80 2f mov r24, r16
986: 99 27 eor r25, r25
988: 24 e0 ldi r18, 0x04 ; 4
98a: 88 0f add r24, r24
98c: 99 1f adc r25, r25
98e: 2a 95 dec r18
990: e1 f7 brne .-8 ; 0x98a <WriteCommand+0x20>
992: 81 23 and r24, r17
994: 0e 94 79 04 call 0x8f2 <SendByte>
998: 1f 91 pop r17
99a: 0f 91 pop r16
99c: 08 95 ret
0000099e <WriteData>:
}
/******************************************************************************************
* 函数名称 :WriteData
* 功能描述 :
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void WriteData(uchar Dbyte )
{
99e: 0f 93 push r16
9a0: 1f 93 push r17
9a2: 08 2f mov r16, r24
CheckBusy();
9a4: 0e 94 ad 04 call 0x95a <CheckBusy>
SendByte(0xfa); //11111,RW(0),RS(1),0
9a8: 8a ef ldi r24, 0xFA ; 250
9aa: 0e 94 79 04 call 0x8f2 <SendByte>
SendByte(0xf0&Dbyte); //高四位
9ae: 10 ef ldi r17, 0xF0 ; 240
9b0: 80 2f mov r24, r16
9b2: 81 23 and r24, r17
9b4: 0e 94 79 04 call 0x8f2 <SendByte>
SendByte(0xf0&Dbyte<<4);//低四位(先执行<<)
9b8: 80 2f mov r24, r16
9ba: 99 27 eor r25, r25
9bc: 34 e0 ldi r19, 0x04 ; 4
9be: 88 0f add r24, r24
9c0: 99 1f adc r25, r25
9c2: 3a 95 dec r19
9c4: e1 f7 brne .-8 ; 0x9be <WriteData+0x20>
9c6: 81 23 and r24, r17
9c8: 0e 94 79 04 call 0x8f2 <SendByte>
DDRC=DDRC|0x01;
9cc: a0 9a sbi 0x14, 0 ; 20
9ce: 1f 91 pop r17
9d0: 0f 91 pop r16
9d2: 08 95 ret
000009d4 <LcmInit>:
}
/******************************************************************************************
* 函数名称 :LcmInit
* 功能描述 :
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void LcmInit( void )
{
DDRD|=(1<<PD4)|(1<<PD5)|(1<<PD6)|(1<<PD7);
9d4: 81 b3 in r24, 0x11 ; 17
9d6: 80 6f ori r24, 0xF0 ; 240
9d8: 81 bb out 0x11, r24 ; 17
PORTD&=~(1<<PD7);
9da: 97 98 cbi 0x12, 7 ; 18
SET_CS;
9dc: 94 9a sbi 0x12, 4 ; 18
WriteCommand(0x30); //8BitMCU,基本指令集合
9de: 80 e3 ldi r24, 0x30 ; 48
9e0: 0e 94 b5 04 call 0x96a <WriteCommand>
WriteCommand(0x03); //AC归0,不改变DDRAM内容 //地址归0
9e4: 83 e0 ldi r24, 0x03 ; 3
9e6: 0e 94 b5 04 call 0x96a <WriteCommand>
WriteCommand(0x0C); //显示ON,游标OFF,游标位反白OFF //整体显示开,游标显示关,反白关
9ea: 8c e0 ldi r24, 0x0C ; 12
9ec: 0e 94 b5 04 call 0x96a <WriteCommand>
WriteCommand(0x01); //清屏,AC归0 //清除显示
9f0: 81 e0 ldi r24, 0x01 ; 1
9f2: 0e 94 b5 04 call 0x96a <WriteCommand>
WriteCommand(0x06); //写入时,游标右移动 //进入设定点
9f6: 86 e0 ldi r24, 0x06 ; 6
9f8: 0e 94 b5 04 call 0x96a <WriteCommand>
9fc: 08 95 ret
000009fe <LcmClearTXT>:
}
/******************************************************************************************
* 函数名称 :LcmClearTXT
* 功能描述 :文本区清RAM函数
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void LcmClearTXT( void )
{
9fe: cf 93 push r28
uchar i;
WriteCommand(0x30); //8BitMCU,基本指令集合
a00: 80 e3 ldi r24, 0x30 ; 48
a02: 0e 94 b5 04 call 0x96a <WriteCommand>
WriteCommand(0x80); //AC归起始位
a06: 80 e8 ldi r24, 0x80 ; 128
a08: 0e 94 b5 04 call 0x96a <WriteCommand>
a0c: cf e3 ldi r28, 0x3F ; 63
for(i=0;i<64;i++)
WriteData(0x20);
a0e: 80 e2 ldi r24, 0x20 ; 32
a10: 0e 94 cf 04 call 0x99e <WriteData>
a14: c1 50 subi r28, 0x01 ; 1
a16: c7 ff sbrs r28, 7
a18: fa cf rjmp .-12 ; 0xa0e <LcmClearTXT+0x10>
a1a: cf 91 pop r28
a1c: 08 95 ret
00000a1e <LcmClearBMP>:
}
/******************************************************************************************
* 函数名称 :LcmClearBMP
* 功能描述 :图形区清RAM函数
* 参数 : 参数名称: 输入/输出? 类型 描述
* 图形区和文本区显示在两个不同的RAM区
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void LcmClearBMP( void )
{
a1e: 1f 93 push r17
a20: cf 93 push r28
uchar i,j;
WriteCommand(0x34); //8Bit扩充指令集,即使是36H也要写两次
a22: 84 e3 ldi r24, 0x34 ; 52
a24: 0e 94 b5 04 call 0x96a <WriteCommand>
WriteCommand(0x36); //绘图ON,基本指令集里面36H不能开绘图
a28: 86 e3 ldi r24, 0x36 ; 54
a2a: 0e 94 b5 04 call 0x96a <WriteCommand>
for(i=0;i<32;i++) //12864实际为256x32
a2e: 10 e0 ldi r17, 0x00 ; 0
{
WriteCommand(0x80|i); //行位置
a30: 81 2f mov r24, r17
a32: 80 68 ori r24, 0x80 ; 128
a34: 0e 94 b5 04 call 0x96a <WriteCommand>
WriteCommand(0x80); //列位置
a38: 80 e8 ldi r24, 0x80 ; 128
a3a: 0e 94 b5 04 call 0x96a <WriteCommand>
a3e: cf e1 ldi r28, 0x1F ; 31
for(j=0;j<32;j++) //256/8=32 byte
WriteData(0);
a40: 80 e0 ldi r24, 0x00 ; 0
a42: 0e 94 cf 04 call 0x99e <WriteData>
a46: c1 50 subi r28, 0x01 ; 1
a48: c7 ff sbrs r28, 7
a4a: fa cf rjmp .-12 ; 0xa40 <LcmClearBMP+0x22>
a4c: 1f 5f subi r17, 0xFF ; 255
a4e: 10 32 cpi r17, 0x20 ; 32
a50: 78 f3 brcs .-34 ; 0xa30 <LcmClearBMP+0x12>
a52: cf 91 pop r28
a54: 1f 91 pop r17
a56: 08 95 ret
00000a58 <PutStr>:
}
}
/******************************************************************************************
* 函数名称 :PutStr
* 功能描述 :PutStr(x,y,str1); //X为行0--3 Y为行起始位置0--7
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void PutStr(uchar row,uchar col,uchar *puts)
{
a58: 0f 93 push r16
a5a: 1f 93 push r17
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -