📄 cac.lst
字号:
(0128) 0x02,0x00,0x03,0x00,0x01,0x88,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
(0129)
(0130) char const font_bfh[]= //%
(0131) {0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x02,0x4C,0x02,0x58,0x01,0xB0,0x00,0x60,
(0132) 0x00,0xD8,0x01,0xA4,0x03,0x24,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
(0133)
(0134)
(0135) //-----------显示汉字串-----------------//
(0136) void DisHZ(unsigned int LCD_COMMAND,unsigned int x, unsigned char *HZS)
(0137) {
(0138) unsigned char i;
(0139) Send_CMD(LCD_COMMAND);
0120 2F04 MOV R16,R20
0121 DF8C RCALL _Send_CMD
(0140) for (i=0;i<x;i++)
0122 2744 CLR R20
0123 C007 RJMP 0x012B
(0141) Send_DATA(HZS[i]);
0124 2FE4 MOV R30,R20
0125 27FF CLR R31
0126 0FE6 ADD R30,R22
0127 1FF7 ADC R31,R23
0128 8100 LDD R16,Z+0
0129 DFAE RCALL _Send_DATA
012A 9543 INC R20
012B 2E24 MOV R2,R20
012C 2433 CLR R3
012D 142A CP R2,R10
012E 043B CPC R3,R11
012F F3A0 BCS 0x0124
0130 940E02C3 CALL pop_gset3
0132 9508 RET
_DisHZXY:
i --> R20
HZS --> R22
z --> R10
y --> R12
x --> R20
0133 940E02CE CALL push_gset4
0135 0169 MOVW R12,R18
0136 01A8 MOVW R20,R16
0137 84A8 LDD R10,Y+8
0138 84B9 LDD R11,Y+9
0139 856A LDD R22,Y+10
013A 857B LDD R23,Y+11
(0142) }
(0143)
(0144) //-----------显示汉字串XY-----------------//
(0145) void DisHZXY(unsigned int x,unsigned int y,unsigned int z, unsigned char *HZS)
(0146) {
(0147) unsigned char i;
(0148) LCD_set_xy(x,y);
013B 2D2C MOV R18,R12
013C 2F04 MOV R16,R20
013D DFB3 RCALL _LCD_set_xy
(0149) for (i=0;i<z;i++)
013E 2744 CLR R20
013F C007 RJMP 0x0147
(0150) Send_DATA(HZS[i]);
0140 2FE4 MOV R30,R20
0141 27FF CLR R31
0142 0FE6 ADD R30,R22
0143 1FF7 ADC R31,R23
0144 8100 LDD R16,Z+0
0145 DF92 RCALL _Send_DATA
0146 9543 INC R20
0147 2E24 MOV R2,R20
0148 2433 CLR R3
0149 142A CP R2,R10
014A 043B CPC R3,R11
014B F3A0 BCS 0x0140
014C 940E02C6 CALL pop_gset4
014E 9508 RET
_DisOneHZ:
Data --> R20
LCD_COMMAND --> R22
014F 940E02D2 CALL push_gset2
0151 2F42 MOV R20,R18
0152 01B8 MOVW R22,R16
(0151) }
(0152)
(0153) //-----------显示一个汉字--------------//
(0154) void DisOneHZ(unsigned int LCD_COMMAND, unsigned char Data)
(0155) {
(0156) Send_CMD(LCD_COMMAND);
0153 2F06 MOV R16,R22
0154 DF59 RCALL _Send_CMD
(0157) Send_DATA(Data);
0155 2F04 MOV R16,R20
0156 DF81 RCALL _Send_DATA
0157 940E02C0 CALL pop_gset2
0159 9508 RET
_DisBMP:
i --> R20
y --> R12
j --> R10
x --> R14
img --> R22
015A 940E02CC CALL push_gset5
015C 01B8 MOVW R22,R16
(0158) }
(0159)
(0160) /*-------------显示图片---------------*/
(0161) void DisBMP(const unsigned char *img)
(0162) {
(0163) unsigned int j=0;
015D 24AA CLR R10
015E 24BB CLR R11
(0164) unsigned char x,y,i;
(0165) for(i=0;i<9;i+=8)
015F 2744 CLR R20
0160 C02B RJMP 0x018C
(0166) for(y=0;y<32;y++)
0161 24CC CLR R12
0162 C024 RJMP 0x0187
(0167) for(x=0;x<8;x++)
0163 24EE CLR R14
0164 C01E RJMP 0x0183
(0168) { Send_CMD(0x36);
0165 E306 LDI R16,0x36
0166 DF47 RCALL _Send_CMD
(0169) Send_CMD(y+0x80);
0167 2D0C MOV R16,R12
0168 5800 SUBI R16,0x80
0169 DF44 RCALL _Send_CMD
(0170) Send_CMD(x+0x80+i);
016A 2D0E MOV R16,R14
016B 5800 SUBI R16,0x80
016C 0F04 ADD R16,R20
016D DF40 RCALL _Send_CMD
(0171) Send_CMD(0x30);
016E E300 LDI R16,0x30
016F DF3E RCALL _Send_CMD
(0172) Send_DATA(img[j++]);
0170 0115 MOVW R2,R10
0171 01C1 MOVW R24,R2
0172 9601 ADIW R24,1
0173 015C MOVW R10,R24
0174 01F1 MOVW R30,R2
0175 0FE6 ADD R30,R22
0176 1FF7 ADC R31,R23
0177 9104 LPM R16,0(Z)
0178 DF5F RCALL _Send_DATA
(0173) Send_DATA(img[j++]);
0179 0115 MOVW R2,R10
017A 01C1 MOVW R24,R2
017B 9601 ADIW R24,1
017C 015C MOVW R10,R24
017D 01F1 MOVW R30,R2
017E 0FE6 ADD R30,R22
017F 1FF7 ADC R31,R23
0180 9104 LPM R16,0(Z)
0181 DF56 RCALL _Send_DATA
0182 94E3 INC R14
0183 2D8E MOV R24,R14
0184 3088 CPI R24,0x8
0185 F2F8 BCS 0x0165
0186 94C3 INC R12
0187 2D8C MOV R24,R12
0188 3280 CPI R24,0x20
0189 F408 BCC 0x018B
018A CFD8 RJMP 0x0163
018B 5F48 SUBI R20,0xF8
018C 3049 CPI R20,0x9
018D F408 BCC 0x018F
018E CFD2 RJMP 0x0161
018F 940E02C9 CALL pop_gset5
0191 9508 RET
FILE: E:\单片机\PROJECT\高精度三维太阳自动跟踪器\程序\传感器控制\delay.h
(0001) /*-----------------------------------------------------------------------
(0002) 延时函数
(0003) 编译器:ICC-AVR v6.31A
(0004) 目标芯片 : M16
(0005) 时钟: 1.0000Mhz
(0006) -----------------------------------------------------------------------*/
(0007) #ifndef __delay_h
(0008) #define __delay_h
(0009) void delay_nus(unsigned int n);
(0010) void delay_nms(unsigned int n);
(0011) void delay_1us(void);
(0012) void delay_1ms(void) ;
(0013)
(0014) void delay_1us(void) //1us延时函数
(0015) {
(0016) asm("nop");
_delay_1us:
0192 0000 NOP
0193 9508 RET
_delay_nus:
i --> R20
n --> R22
0194 940E02D2 CALL push_gset2
0196 01B8 MOVW R22,R16
(0017) }
(0018)
(0019) void delay_nus(unsigned int n) //N us延时函数
(0020) {
(0021) unsigned int i=0;
0197 2744 CLR R20
0198 2755 CLR R21
(0022) for (i=0;i<n;i++)
0199 C003 RJMP 0x019D
(0023) delay_1us();
019A DFF7 RCALL _delay_1us
019B 5F4F SUBI R20,0xFF
019C 4F5F SBCI R21,0xFF
019D 1746 CP R20,R22
019E 0757 CPC R21,R23
019F F3D0 BCS 0x019A
01A0 940E02C0 CALL pop_gset2
01A2 9508 RET
(0024) }
(0025)
(0026) void delay_1ms(void) //1ms延时函数
(0027) {
(0028) unsigned int i;
(0029) for (i=0;i<1140;i++);
_delay_1ms:
i --> R16
01A3 2700 CLR R16
01A4 2711 CLR R17
01A5 C002 RJMP 0x01A8
01A6 5F0F SUBI R16,0xFF
01A7 4F1F SBCI R17,0xFF
01A8 3704 CPI R16,0x74
01A9 E0E4 LDI R30,4
01AA 071E CPC R17,R30
01AB F3D0 BCS 0x01A6
01AC 9508 RET
_delay_nms:
i --> R20
n --> R22
01AD 940E02D2 CALL push_gset2
01AF 01B8 MOVW R22,R16
(0030) }
(0031)
(0032) void delay_nms(unsigned int n) //N ms延时函数
(0033) {
(0034) unsigned int i=0;
01B0 2744 CLR R20
01B1 2755 CLR R21
(0035) for (i=0;i<n;i++)
01B2 C003 RJMP 0x01B6
(0036) delay_1ms();
01B3 DFEF RCALL _delay_1ms
01B4 5F4F SUBI R20,0xFF
01B5 4F5F SBCI R21,0xFF
01B6 1746 CP R20,R22
01B7 0757 CPC R21,R23
01B8 F3D0 BCS 0x01B3
01B9 940E02C0 CALL pop_gset2
01BB 9508 RET
_change:
p --> R20
i --> R22
01BC 940E02D2 CALL push_gset2
01BE 01A9 MOVW R20,R18
01BF 01B8 MOVW R22,R16
FILE: E:\单片机\PROJECT\高精度三维太阳自动跟踪器\程序\传感器控制\main.c
(0001) /*****************************************
(0002) * 基于AD转化程序设计 *
(0003) * 功 能:AD转化 *
(0004) * 时钟频率:内部8M *
(0005) * 设 计:莫锦攀 *
(0006) * 修改日期:2007年07月04日 *
(0007) * 编译环境:ICC-AVR6.31 *
(0008) * 实验环境:M16学习板 *
(0009) * 使用端口:PC6,PC7,PA4~PA7,PA0 *
(0010) *****************************************/
(0011)
(0012) #include <iom128v.h>
(0013) #include <macros.h>
(0014) #include "lcm12864.h"
(0015) #include "delay.h"
(0016) #define uchar unsigned char
(0017) #define uint unsigned int
(0018) uchar Data[5]={0,0,0,0,0};//初始值为0000,最后一个0是结束符
(0019) void change(uint i,uchar *p) //显示处理
(0020) {p[3]=i%10+48;//个
01C0 E02A LDI R18,0xA
01C1 E030 LDI R19,0
01C2 018B MOVW R16,R22
01C3 940E02A4 CALL mod16u
01C5 01C8 MOVW R24,R16
01C6 96C0 ADIW R24,0x30
01C7 01FA MOVW R30,R20
01C8 8383 STD Z+3,R24
(0021) p[2]=i/10%10+48;//十
01C9 E02A LDI R18,0xA
01CA E030 LDI R19,0
01CB 018B MOVW R16,R22
01CC 940E02A6 CALL div16u
01CE E02A LDI R18,0xA
01CF E030 LDI R19,0
01D0 940E02A4 CALL mod16u
01D2 01C8 MOVW R24,R16
01D3 96C0 ADIW R24,0x30
01D4 01FA MOVW R30,R20
01D5 8382 STD Z+2,R24
(0022) p[1]=i/100%10+48;//百
01D6 E624 LDI R18,0x64
01D7 E030 LDI R19,0
01D8 018B MOVW R16,R22
01D9 940E02A6 CALL div16u
01DB E02A LDI R18,0xA
01DC E030 LDI R19,0
01DD 940E02A4 CALL mod16u
01DF 01C8 MOVW R24,R16
01E0 96C0 ADIW R24,0x30
01E1 01FA MOVW R30,R20
01E2 8381 STD Z+1,R24
(0023) p[0]=i/1000%10+48;//千
01E3 EE28 LDI R18,0xE8
01E4 E033 LDI R19,3
01E5 018B MOVW R16,R22
01E6 940E02A6 CALL div16u
01E8 E02A LDI R18,0xA
01E9 E030 LDI R19,0
01EA 940E02A4 CALL mod16u
01EC 01C8 MOVW R24,R16
01ED 96C0 ADIW R24,0x30
01EE 01FA MOVW R30,R20
01EF 8380 STD Z+0,R24
01F0 940E02C0 CALL pop_gset2
01F2 9508 RET
(0024) }
(0025)
(0026) uint ADC_convert(void)//AD转换函数,读取采样获得的10位数据
(0027) {
(0028) uint temp1,temp2;
(0029) temp1=(uint)ADCL;
_ADC_convert:
temp1 --> R18
temp2 --> R16
01F3 B124 IN R18,0x04
01F4 2733 CLR R19
(0030) temp2=(uint)ADCH;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -