📄 mnj_1335.lst
字号:
(1068)
(1069) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(1070) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(1071) 0x00,0x00,0x01,0x80,0x60,0x01,0x80,0x70,
(1072) 0x0F,0xF0,0x60,0x0E,0x30,0x60,0x0F,0xFF,
(1073) 0xFE,0x06,0x3C,0x6E,0x07,0xF2,0x60,0x3F,
(1074) 0xF7,0x60,0x3F,0xF1,0xE0,0x01,0xB0,0x60,
(1075) 0x0F,0x30,0x60,0x7E,0x30,0x60,0x71,0xFD,
(1076) 0xE0,0x00,0xE3,0xC0,0x00,0x00,0x00,0x00,
(1077) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"射",14*/
(1078)
(1079) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(1080) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(1081) 0x00,0x00,0x00,0x0C,0x40,0x03,0x8C,0xC0,
(1082) 0x03,0x0D,0x80,0x06,0x0C,0x60,0x0C,0xBF,
(1083) 0xE0,0x39,0xFC,0x00,0x3F,0x0D,0xF0,0x04,
(1084) 0x3F,0x80,0x09,0xE6,0x60,0x1E,0x07,0xC0,
(1085) 0x00,0x67,0x80,0x07,0x8F,0xC0,0x3E,0x39,
(1086) 0xFE,0x78,0x00,0xFC,0x00,0x00,0x18,0x00,
(1087) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"线",15*/
(1088)
(1089) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(1090) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(1091) 0x00,0x00,0x00,0x04,0x10,0x3F,0xEF,0xF8,
(1092) 0x33,0x68,0x38,0x1B,0x63,0xC0,0x1F,0xE1,
(1093) 0xC0,0x13,0x6F,0xFE,0x1F,0xEF,0xFE,0x13,
(1094) 0x20,0xCE,0x1F,0xE0,0xCC,0x3F,0xC0,0xC0,
(1095) 0x03,0x30,0xC0,0x07,0xE0,0xC0,0x7F,0x21,
(1096) 0xC0,0x70,0x1F,0xC0,0x00,0x07,0x80,0x00,
(1097) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"野",16*/
(1098)
(1099)
(1100) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(1101) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(1102) 0x00,0x00,0x00,0x07,0x00,0x18,0x07,0x00,
(1103) 0x1E,0x0C,0xC0,0x0F,0x18,0x70,0x00,0x70,
(1104) 0x38,0x60,0xFF,0xEC,0x7C,0x47,0x80,0x3E,
(1105) 0x00,0x00,0x00,0x3F,0xF8,0x00,0x30,0x38,
(1106) 0x03,0x30,0x18,0x1E,0x38,0x38,0x1C,0x3F,
(1107) 0xF8,0x08,0x18,0x30,0x00,0x00,0x00,0x00,
(1108) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"治",17*/
(1109)
(1110) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(1111) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(1112) 0x00,0x00,0x00,0x0E,0x00,0x07,0x0E,0x00,
(1113) 0x07,0xFF,0xF8,0x03,0x06,0x00,0x33,0x7F,
(1114) 0xF0,0x3F,0x40,0x70,0x03,0x07,0x80,0x3F,
(1115) 0x03,0x00,0x13,0x03,0x00,0x06,0x01,0x80,
(1116) 0x0E,0x01,0x80,0x3C,0x03,0x80,0x78,0x63,
(1117) 0x00,0x30,0x3F,0x00,0x00,0x0C,0x00,0x00,
(1118) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"疗",18*/
(1119)
(1120) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(1121) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(1122) 0x00,0x00,0x00,0x1C,0x00,0x04,0x1E,0x00,
(1123) 0x07,0xFF,0xF8,0x06,0x0C,0x00,0x06,0x0C,
(1124) 0x00,0x06,0xFF,0xE0,0x06,0xFF,0xE0,0x06,
(1125) 0x1F,0x00,0x0C,0x3F,0x80,0x0C,0x7D,0xE0,
(1126) 0x1D,0xEC,0x7E,0x7B,0xCC,0x3E,0x70,0x0C,
(1127) 0x1C,0x00,0x0C,0x00,0x00,0x0C,0x00,0x00,
(1128) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"床",19*/
(1129)
(1130) };
(1131)
(1132) /*==============================================================================
(1133) ;------------ 文本方式下汉字写入子程序 ------------
(1134) ; 该汉字字模是根据清华蓬远公司提供的PICKHZ.EXE软件从计算机中提取的汉字 16x16
(1135) 点阵字模, 其排列顺序是: 前16字节为汉字左半部分(自上而下), 后16字节为汉字右
(1136) 半部分(自上而下). 下面提供的在文本方式下汉字的写入子程序可以在文本显示区任意
(1137) 地方写入汉字. 程序如下:
(1138) ==============================================================================*/
(1139) void PutWordInAlpha( void ) {
(1140) // 首先建立CGRAM,
(1141) sed1335_write_command( Ovlay ); // 显示合成方式设置.代码0x5b
0DA2 E50B LDI R16,0x5B
0DA3 DF88 RCALL _sed1335_write_command
(1142) sed1335_write_data( 0x01 ); // 设置参数:显示3区为文本属性,二重xor合成
0DA4 E001 LDI R16,1
0DA5 DF8E RCALL _sed1335_write_data
(1143) BuildCgram( 0,8 ); // 调建立CGRAM子程序设置写入字模量八个汉字模
0DA6 E028 LDI R18,0x8
0DA7 2700 CLR R16
0DA8 D04F RCALL _BuildCgram
(1144) // 开始调用显示cgram内所建立的汉字模
(1145) PutCdotInAlpha(0,8,0x80); // 调文本方式下汉字写入子程序,88H= "模"
0DA9 E880 LDI R24,0x80
0DAA 8388 STD Y+0,R24
0DAB E028 LDI R18,0x8
0DAC 2700 CLR R16
0DAD D019 RCALL _PutCdotInAlpha
(1146) PutCdotInAlpha(2,8,0x84); // 调文本方式下汉字写入子程序,8cH= "拟"
0DAE E884 LDI R24,0x84
0DAF 8388 STD Y+0,R24
0DB0 E028 LDI R18,0x8
0DB1 E002 LDI R16,2
0DB2 D014 RCALL _PutCdotInAlpha
(1147) PutCdotInAlpha(4,8,0x88); // 调文本方式下汉字写入子程序,90H= "定"
0DB3 E888 LDI R24,0x88
0DB4 8388 STD Y+0,R24
0DB5 E028 LDI R18,0x8
0DB6 E004 LDI R16,4
0DB7 D00F RCALL _PutCdotInAlpha
(1148) PutCdotInAlpha(6,8,0x8c); // 调文本方式下汉字写入子程序,94H= "位"
0DB8 E88C LDI R24,0x8C
0DB9 8388 STD Y+0,R24
0DBA E028 LDI R18,0x8
0DBB E006 LDI R16,6
0DBC D00A RCALL _PutCdotInAlpha
(1149) PutCdotInAlpha(8,8,0x90); // 调文本方式下汉字写入子程序,90H= "机"
0DBD E980 LDI R24,0x90
0DBE 8388 STD Y+0,R24
0DBF E028 LDI R18,0x8
0DC0 E008 LDI R16,0x8
0DC1 D005 RCALL _PutCdotInAlpha
(1150) delay_ms(50);
0DC2 E302 LDI R16,0x32
0DC3 E010 LDI R17,0
0DC4 DF58 RCALL _delay_ms
(1151) }
0DC5 9621 ADIW R28,1
0DC6 9508 RET
_PutCdotInAlpha:
tempCount --> R20
tempPtr --> R22
Cnumber --> R10
Oy --> R22
Ox --> R20
0DC7 940E11EB CALL push_gset3
0DC9 2F62 MOV R22,R18
0DCA 2F40 MOV R20,R16
0DCB 80AE LDD R10,Y+6
(1152) /*============================================================================
(1153) 汉字写入子程序(文本方式)
(1154) 在文本方式下显示汉字, 首先要建立汉字Cgram, 要定义汉字代码.
(1155) 在文本方式下写汉字需要写入4 个代码以组成一个汉字
(1156) 每8字节组成一个点阵Ascii小区,4个小区组合成一个汉字所以需要4个代码
(1157) ============================================================================*/
(1158) void PutCdotInAlpha( Uchar Ox, Uchar Oy, Uchar Cnumber ) {
(1159) Uint tempPtr;
(1160) Uchar tempCount;
(1161) tempPtr = (Uint)Oy * paraP9 + Ox;
0DCC E288 LDI R24,0x28
0DCD 9F86 MUL R24,R22
0DCE 01B0 MOVW R22,R0
0DCF 2E24 MOV R2,R20
0DD0 2433 CLR R3
0DD1 0D62 ADD R22,R2
0DD2 1D73 ADC R23,R3
(1162) sed1335_write_command( CsrDirD ); // CSRDIR 代码(下移)
0DD3 E40F LDI R16,0x4F
0DD4 DF57 RCALL _sed1335_write_command
(1163) for(tempCount=0;tempCount<2;tempCount++) {
0DD5 2744 CLR R20
0DD6 C01C RJMP 0x0DF3
(1164) sed1335_write_command( CsrW ); // CSRW 代码,光标指针设置
0DD7 E406 LDI R16,0x46
0DD8 DF53 RCALL _sed1335_write_command
(1165) sed1335_write_data( (Uchar)(tempPtr &0xff) ); // 设置光标地址CSR
0DD9 2F06 MOV R16,R22
0DDA 7010 ANDI R17,0
0DDB DF58 RCALL _sed1335_write_data
(1166) sed1335_write_data( tempPtr /256 + BasePart3 );
0DDC 018B MOVW R16,R22
0DDD 2F01 MOV R16,R17
0DDE 2711 CLR R17
0DDF 5800 SUBI R16,0x80
0DE0 4F1F SBCI R17,0xFF
0DE1 DF52 RCALL _sed1335_write_data
(1167) sed1335_write_command( mWrite ); // 代码0x42,数据写入指令
0DE2 E402 LDI R16,0x42
0DE3 DF48 RCALL _sed1335_write_command
(1168) sed1335_write_data( Cnumber++ ); // 写入汉字代码
0DE4 2C2A MOV R2,R10
0DE5 2D82 MOV R24,R2
0DE6 5F8F SUBI R24,0xFF
0DE7 2EA8 MOV R10,R24
0DE8 2D02 MOV R16,R2
0DE9 DF4A RCALL _sed1335_write_data
(1169) sed1335_write_data( Cnumber++ ); // 写入汉字代码
0DEA 2C2A MOV R2,R10
0DEB 2D82 MOV R24,R2
0DEC 5F8F SUBI R24,0xFF
0DED 2EA8 MOV R10,R24
0DEE 2D02 MOV R16,R2
0DEF DF44 RCALL _sed1335_write_data
(1170) tempPtr++; // 修正光标地址
0DF0 5F6F SUBI R22,0xFF
0DF1 4F7F SBCI R23,0xFF
0DF2 9543 INC R20
0DF3 3042 CPI R20,2
0DF4 F310 BCS 0x0DD7
(1171) }
(1172) }
0DF5 940E11CA CALL pop_gset3
0DF7 9508 RET
_BuildCgram:
ii --> R20
ij --> R12
iCgram --> R14
EndlCode --> R10
Base --> R22
0DF8 940E11F3 CALL push_gset5
0DFA 2EA2 MOV R10,R18
0DFB 2F60 MOV R22,R16
(1173) /*============================================
(1174) 建立 cgram,将显示字符送入cgram中
(1175)
(1176) 入口参数约定:Base.... 起始
(1177) =============================================*/
(1178) void BuildCgram( Uchar Base, Uchar EndlCode ) {
(1179)
(1180) Uchar iCgram,ii,ij;
(1181) sed1335_write_command( CgramAdr ); // CGRAMADR 代码
0DFC E50C LDI R16,0x5C
0DFD DF2E RCALL _sed1335_write_command
(1182) sed1335_write_data( 0 ); // 设置SAG=0C000H
0DFE 2700 CLR R16
0DFF DF34 RCALL _sed1335_write_data
(1183) sed1335_write_data( 0x70 ); // 汉字模在cgram中的编码0x70~0x73
0E00 E700 LDI R16,0x70
0E01 DF32 RCALL _sed1335_write_data
(1184) sed1335_write_command( CsrW ); // CSRW 代码,光标指针设置
0E02 E406 LDI R16,0x46
0E03 DF28 RCALL _sed1335_write_command
(1185) sed1335_write_data( 0 ); // 设置CSR=0C400H(字符代码=80H)
0E04 2700 CLR R16
0E05 DF2E RCALL _sed1335_write_data
(1186) sed1335_write_data( 0x74 ); // 汉字模在cgram中的编码0x70~0x73
0E06 E704 LDI R16,0x74
0E07 DF2C RCALL _sed1335_write_data
(1187) sed1335_write_command( CsrDirR ); // CSRDIR 代码
0E08 E40C LDI R16,0x4C
0E09 DF22 RCALL _sed1335_write_command
(1188) sed1335_write_command( mWrite ); // 代码0x42,数据写入指令
0E0A E402 LDI R16,0x42
0E0B DF20 RCALL _sed1335_write_command
(1189) for (ii=0;ii<EndlCode;ii++){
0E0C 2744 CLR R20
0E0D C022 RJMP 0x0E30
(1190) for (ij=0;ij<2;ij++){
0E0E 24CC CLR R12
0E0F C01C RJMP 0x0E2C
(1191) for (iCgram=0;iCgram<32;iCgram+=2)
0E10 24EE CLR R14
0E11 C016 RJMP 0x0E28
(1192) sed1335_write_data( Cdotlib[Base+ii].Msk[ij+iCgram] ); // 将制定的数据块写入 cgram
0E12 2E26 MOV R2,R22
0E13 0E24 ADD R2,R20
0E14 E282 LDI R24,0x22
0E15 9D82 MUL R24,R2
0E16 0110 MOVW R2,R0
0E17 E789 LDI R24,0x79
0E18 E090 LDI R25,0
0E19 0E28 ADD R2,R24
0E1A 1E39 ADC R3,R25
0E1B 2C4E MOV R4,R14
0E1C 2455 CLR R5
0E1D 2DEC MOV R30,R12
0E1E 27FF CLR R31
0E1F 0DE4 ADD R30,R4
0E20 1DF5 ADC R31,R5
0E21 0DE2 ADD R30,R2
0E22 1DF3 ADC R31,R3
0E23 8100 LDD R16,Z+0
0E24 DF0F RCALL _sed1335_write_data
0E25 2D8E MOV R24,R14
0E26 5F8E SUBI R24,0xFE
0E27 2EE8 MOV R14,R24
0E28 2D8E MOV R24,R14
0E29 3280 CPI R24,0x20
0E2A F338 BCS 0x0E12
0E2B 94C3 INC R12
0E2C 2D8C MOV R24,R12
0E2D 3082 CPI R24,2
0E2E F308 BCS 0x0E10
0E2F 9543 INC R20
0E30 154A CP R20,R10
0E31 F2E0 BCS 0x0E0E
(1193) }
(1194) }
(1195) }
0E32 940E11CD CALL pop_gset5
0E34 9508 RET
_PutCdotInGraph:
Optr --> Y+0
tempPtr --> R10
nByte --> R12
tempCount1 --> R14
tempCount2 --> R22
DotWidth --> Y+14
Cnumber --> Y+12
Oy --> R22
Ox --> R20
0E35 940E11F3 CALL push_gset5
0E37 2F62 MOV R22,R18
0E38 01A8 MOVW R20,R16
0E39 9722 SBIW R28,2
(1196) /*==============================================================================
(1197) ; 汉字写入子程序(图形方式)。每次调用输出一个汉字
(1198) ; 支持图形方式使用,完成汉字点阵码的输出。
(1199) ; 携入参数: Ox,Oy....写入显示的左上角坐标,Ox是以字节单位,Oy以行扫描线单位
(1200) Ptr......汉字码,库内的排列编码,大型程序时请改用unsigned int类型
(1201) ; 无返回数据。
(1202) ==============================================================================*/
(1203) void PutCdotInGraph( Uint Ox, Uchar Oy, Uint Cnumber, Uchar DotWidth ) {
(1204)
(1205) Uint tempPtr,Optr;
(1206) Uchar tempCount1,tempCount2,nByte;
(1207) Optr = (Uint)Oy * paraP9 + Ox;
0E3A E288 LDI R24,0x28
0E3B 9F86 MUL R24,R22
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -