📄 h2test.lst
字号:
07DC 9A92 SBI 0x12,2
(0050) wait;
07DD 0000 NOP
07DE 0000 NOP
(0051) mClrDS1302SCK;
07DF 9892 CBI 0x12,2
(0052) wait;
07E0 0000 NOP
07E1 0000 NOP
07E2 9543 INC R20
07E3 3048 CPI R20,0x8
07E4 F358 BCS 0x07D0
(0053) }
(0054)
(0055) wait;
07E5 0000 NOP
07E6 0000 NOP
(0056) mClrDS1302RST;
07E7 9893 CBI 0x12,3
(0057) wait;
07E8 0000 NOP
07E9 0000 NOP
07EA 940E0EB9 CALL pop_gset3
07EC 9508 RET
_pDS1302_Read:
data --> R20
i --> R22
reg --> R10
07ED 940E0EC6 CALL push_gset3
07EF 2EA0 MOV R10,R16
(0058) }
(0059)
(0060) unsigned char pDS1302_Read(unsigned char reg)
(0061) {
(0062) unsigned char data=0,i;
07F0 2744 CLR R20
(0063)
(0064) mDS1302IO_Out;
07F1 9A8C SBI 0x11,4
(0065) reg+=1;//读标志
07F2 94A3 INC R10
(0066) mSetDS1302IO;
07F3 9A94 SBI 0x12,4
(0067)
(0068) mClrDS1302RST;
07F4 9893 CBI 0x12,3
(0069) wait;
07F5 0000 NOP
07F6 0000 NOP
(0070) mClrDS1302SCK;
07F7 9892 CBI 0x12,2
(0071) wait;
07F8 0000 NOP
07F9 0000 NOP
(0072) wait;
07FA 0000 NOP
07FB 0000 NOP
(0073) mSetDS1302RST;
07FC 9A93 SBI 0x12,3
(0074) wait;
07FD 0000 NOP
07FE 0000 NOP
(0075)
(0076) for(i=0;i<8;i++)
07FF 2766 CLR R22
0800 C013 RJMP 0x0814
(0077) {
(0078) if(reg&BIT(i))
0801 E001 LDI R16,1
0802 2F16 MOV R17,R22
0803 940E0F05 CALL lsl8
0805 2C2A MOV R2,R10
0806 2220 AND R2,R16
0807 F011 BEQ 0x080A
(0079) mSetDS1302IO;
0808 9A94 SBI 0x12,4
0809 C001 RJMP 0x080B
(0080) else
(0081) mClrDS1302IO;
080A 9894 CBI 0x12,4
(0082) wait;
080B 0000 NOP
080C 0000 NOP
(0083) mSetDS1302SCK;
080D 9A92 SBI 0x12,2
(0084) wait;
080E 0000 NOP
080F 0000 NOP
(0085) mClrDS1302SCK;
0810 9892 CBI 0x12,2
(0086) wait;
0811 0000 NOP
0812 0000 NOP
0813 9563 INC R22
0814 3068 CPI R22,0x8
0815 F358 BCS 0x0801
(0087) }
(0088)
(0089) mDS1302IO_In;
0816 988C CBI 0x11,4
(0090) wait;
0817 0000 NOP
0818 0000 NOP
(0091) wait;
0819 0000 NOP
081A 0000 NOP
(0092)
(0093) for(i=0;i<8;i++)
081B 2766 CLR R22
081C C016 RJMP 0x0833
(0094) {
(0095) if(mTestDS1302IO)
081D 9B84 SBIS 0x10,4
081E C006 RJMP 0x0825
(0096) data |= BIT(i);
081F E001 LDI R16,1
0820 2F16 MOV R17,R22
0821 940E0F05 CALL lsl8
0823 2B40 OR R20,R16
0824 C007 RJMP 0x082C
(0097) else
(0098) data &= ~BIT(i);
0825 E001 LDI R16,1
0826 2F16 MOV R17,R22
0827 940E0F05 CALL lsl8
0829 2E20 MOV R2,R16
082A 9420 COM R2
082B 2142 AND R20,R2
(0099) mSetDS1302SCK;
082C 9A92 SBI 0x12,2
(0100) wait;
082D 0000 NOP
082E 0000 NOP
(0101) mClrDS1302SCK;
082F 9892 CBI 0x12,2
(0102) wait;
0830 0000 NOP
0831 0000 NOP
0832 9563 INC R22
0833 3068 CPI R22,0x8
0834 F340 BCS 0x081D
(0103) }
(0104) wait;
0835 0000 NOP
0836 0000 NOP
(0105) mClrDS1302RST;
0837 9893 CBI 0x12,3
(0106) wait;
0838 0000 NOP
0839 0000 NOP
(0107)
(0108) return(data);
083A 2F04 MOV R16,R20
083B 940E0EB9 CALL pop_gset3
083D 9508 RET
(0109) }
(0110)
(0111) void pDS1302_Init(void)
(0112) {
(0113) pDS1302_Write(mDS1302_CONTROL_Reg,0x00); //关闭写保护
_pDS1302_Init:
083E 2722 CLR R18
083F E80E LDI R16,0x8E
0840 DF67 RCALL _pDS1302_Write
(0114) //pDS1302_Write(mDS1302_SEC_Reg,0x80); //暂停
(0115) pDS1302_Write(mDS1302_CHARGER_Reg,0x00); //涓流充电 A9
0841 2722 CLR R18
0842 E900 LDI R16,0x90
0843 DF64 RCALL _pDS1302_Write
(0116) pDS1302_Write(mDS1302_HOUR_Reg,0x08); //时
0844 E028 LDI R18,0x8
0845 E804 LDI R16,0x84
0846 DF61 RCALL _pDS1302_Write
(0117) pDS1302_Write(mDS1302_MIN_Reg,0x34); //分
0847 E324 LDI R18,0x34
0848 E802 LDI R16,0x82
0849 DF5E RCALL _pDS1302_Write
(0118) pDS1302_Write(mDS1302_SEC_Reg,0x20); //秒
084A E220 LDI R18,0x20
084B E800 LDI R16,0x80
084C DF5B RCALL _pDS1302_Write
(0119) pDS1302_Write(mDS1302_CONTROL_Reg,0x80); //打开写保护
084D E820 LDI R18,0x80
084E E80E LDI R16,0x8E
084F DF58 RCALL _pDS1302_Write
0850 9508 RET
_Delay10ms:
TimeCount --> R20
j --> R22
count --> R16
0851 940E0EC8 CALL push_gset2
FILE: D:\zhangyu\H2test\program\6675.c
(0001) /************************************************************
(0002) FileName: 6675.c
(0003) Description: 温度函数,读取并且显示温度
(0004) Function List:
(0005) 1. read_max6675() 读取6675的转换结果
(0006) 2. max6675_display() 显示6675的转换结果
(0007) 3. show_temperature() 读取并显示6675的转换结果
(0008) 4. Delay10ms() 延时函数
(0009) ***********************************************************/
(0010) #include <iom16v.h>
(0011) #include <macros.h>
(0012) #include "6675.h"
(0013) #include "main.h"
(0014) #include "lcd.h"
(0015)
(0016) void Delay10ms(unsigned char count)
(0017) {
(0018) unsigned char TimeCount;
(0019) unsigned int j;
(0020) TimeCount = count;
0853 2F40 MOV R20,R16
0854 C00A RJMP 0x085F
(0021) while(TimeCount > 0)
(0022) {
(0023) for(j=0;j<200;j++)
0855 2766 CLR R22
0856 2777 CLR R23
0857 C002 RJMP 0x085A
0858 5F6F SUBI R22,0xFF
0859 4F7F SBCI R23,0xFF
085A 3C68 CPI R22,0xC8
085B E0E0 LDI R30,0
085C 077E CPC R23,R30
085D F3D0 BCS 0x0858
(0024) {;;}
(0025) TimeCount--;
085E 954A DEC R20
085F 2422 CLR R2
0860 1624 CP R2,R20
0861 F398 BCS 0x0855
0862 940E0EB6 CALL pop_gset2
0864 9508 RET
_read_max6675:
x --> R20
i --> R22
0865 940E0EC8 CALL push_gset2
(0026) }
(0027) }
(0028)
(0029) unsigned int read_max6675(void)
(0030) {
(0031) unsigned char i;
(0032) unsigned int x=0;
0867 2744 CLR R20
0868 2755 CLR R21
(0033) clr_sck;
0869 98C1 CBI 0x18,1
(0034) wait;
086A 0000 NOP
086B 0000 NOP
(0035) clr_cs6675;
086C 98C0 CBI 0x18,0
(0036) wait;
086D 0000 NOP
086E 0000 NOP
(0037) set_sck;
086F 9AC1 SBI 0x18,1
(0038) wait;
0870 0000 NOP
0871 0000 NOP
(0039) for(i=0;i<16;i++) //读取转换结果的12位
0872 2766 CLR R22
0873 C015 RJMP 0x0889
(0040) {
(0041) wait;
0874 0000 NOP
0875 0000 NOP
(0042) clr_sck;
0876 98C1 CBI 0x18,1
(0043) if(so)
0877 9BB6 SBIS 0x16,6
0878 C00C RJMP 0x0885
(0044) x|=(1<<(15-i));
0879 2E26 MOV R2,R22
087A 2433 CLR R3
087B E02F LDI R18,0xF
087C E030 LDI R19,0
087D 1922 SUB R18,R2
087E 0933 SBC R19,R3
087F E001 LDI R16,1
0880 E010 LDI R17,0
0881 940E0EFE CALL lsl16
0883 2B40 OR R20,R16
0884 2B51 OR R21,R17
(0045) wait;
0885 0000 NOP
0886 0000 NOP
(0046) set_sck;
0887 9AC1 SBI 0x18,1
0888 9563 INC R22
0889 3160 CPI R22,0x10
088A F348 BCS 0x0874
(0047) }
(0048)
(0049) x=(x&0x7fff)>>3;
088B 775F ANDI R21,0x7F
088C 9556 LSR R21
088D 9547 ROR R20
088E 9556 LSR R21
088F 9547 ROR R20
0890 9556 LSR R21
0891 9547 ROR R20
(0050) set_cs6675;
0892 9AC0 SBI 0x18,0
(0051) return x;
0893 018A MOVW R16,R20
0894 940E0EB6 CALL pop_gset2
0896 9508 RET
_max6675_display:
m --> R22
n --> R20
temp --> Y+1
x --> R10
0897 940E0EC6 CALL push_gset3
0899 0158 MOVW R10,R16
089A 972F SBIW R28,0xF
(0052) }
(0053)
(0054) void max6675_display(unsigned int x)
(0055) {
(0056) unsigned int temp[5]={0,0,0,0,0};
089B E58C LDI R24,0x5C
089C E094 LDI R25,4
089D 01FE MOVW R30,R28
089E 9631 ADIW R30,1
089F E00A LDI R16,0xA
08A0 E010 LDI R17,0
08A1 93FA ST R31,-Y
08A2 93EA ST R30,-Y
08A3 939A ST R25,-Y
08A4 938A ST R24,-Y
08A5 940E0F0B CALL asgncblk
(0057) unsigned int n=0,m=0;
08A7 2744 CLR R20
08A8 2755 CLR R21
08A9 2766 CLR R22
08AA 2777 CLR R23
(0058) m=10237.5*x/4095;
08AB E702 LDI R16,0x72
08AC E014 LDI R17,4
08AD 940E0EEA CALL lpm32
08AF 933A ST R19,-Y
08B0 932A ST R18,-Y
08B1 931A ST R17,-Y
08B2 930A ST R16,-Y
08B3 E60E LDI R16,0x6E
08B4 E014 LDI R17,4
08B5 940E0EEA CALL lpm32
08B7 933A ST R19,-Y
08B8 932A ST R18,-Y
08B9 931A ST R17,-Y
08BA 930A ST R16,-Y
08BB 0185 MOVW R16,R10
08BC 9516 LSR R17
08BD 9507 ROR R16
08BE 940E0F6C CALL int2fp
08C0 933A ST R19,-Y
08C1 932A ST R18,-Y
08C2 931A ST R17,-Y
08C3 930A ST R16,-Y
08C4 940E10B5 CALL empy32fs
08C6 0185 MOVW R16,R10
08C7 7001 ANDI R16,1
08C8 7010 ANDI R17,0
08C9 940E0F6C CALL int2fp
08CB 933A ST R19,-Y
08CC 932A ST R18,-Y
08CD 931A ST R17,-Y
08CE 930A ST R16,-Y
08CF 940E0FC6 CALL add32fs
08D1 940E10B5 CALL empy32fs
08D3 E60A LDI R16,0x6A
08D4 E014 LDI R17,4
08D5 940E0EEA CALL lpm32
08D7 933A ST R19,-Y
08D8 932A ST R18,-Y
08D9 931A ST R17,-Y
08DA 930A ST R16,-Y
08DB 940E102A CALL div32f
08DD 01FE MOVW R30,R28
08DE 8703 STD Z+11,R16
08DF 8714 STD Z+12,R17
08E0 8725 STD Z+13,R18
08E1 8736 STD Z+14,R19
08E2 01FE MOVW R30,R28
08E3 8423 LDD R2,Z+11
08E4 8434 LDD R3,Z+12
08E5 8445 LDD R4,Z+13
08E6 8456 LDD R5,Z+14
08E7 925A ST R5,-Y
08E8 924A ST R4,-Y
08E9 923A ST R3,-Y
08EA 922A ST R2,-Y
08EB E606 LDI R16,0x66
08EC E014 LDI R17,4
08ED 940E0EEA CALL lpm32
08EF 933A ST R19,-Y
08F0 932A ST R18,-Y
08F1 931A ST R17,-Y
08F2 930A ST R16,-Y
08F3 940E1084 CALL cmp32f
08F5 F0D4 BLT 0x0910
08F6 01FE MOVW R30,R28
08F7 8423 LDD R2,Z+11
08F8 8434 LDD R3,Z+12
08F9 8445 LDD R4,Z+13
08FA 8456 LDD R5,Z+14
08FB 925A ST R5,-Y
08FC 924A ST R4,-Y
08FD 92
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -