?? 9313_finish.lst
字號:
__start:
__text_start:
002A E5CF LDI R28,0x5F
002B E0D4 LDI R29,4
002C BFCD OUT 0x3D,R28
002D BFDE OUT 0x3E,R29
002E 51C0 SUBI R28,0x10
002F 40D0 SBCI R29,0
0030 EA0A LDI R16,0xAA
0031 8308 STD Y+0,R16
0032 2400 CLR R0
0033 E6E0 LDI R30,0x60
0034 E0F0 LDI R31,0
0035 E010 LDI R17,0
0036 36E0 CPI R30,0x60
0037 07F1 CPC R31,R17
0038 F011 BEQ 0x003B
0039 9201 ST R0,Z+
003A CFFB RJMP 0x0036
003B 8300 STD Z+0,R16
003C E5E4 LDI R30,0x54
003D E0F0 LDI R31,0
003E E6A0 LDI R26,0x60
003F E0B0 LDI R27,0
0040 E010 LDI R17,0
0041 35E4 CPI R30,0x54
0042 07F1 CPC R31,R17
0043 F021 BEQ 0x0048
0044 95C8 LPM
0045 9631 ADIW R30,1
0046 920D ST R0,X+
0047 CFF9 RJMP 0x0041
0048 940E00C0 CALL _main
_exit:
004A CFFF RJMP _exit
FILE: 9313_finish.c
(0001) //*********************************************************
(0002) //測試功能:測試9313放大n+1倍 現在放大2倍
(0003) //測試方法:
(0004) //測試結果:?
(0005) //時鐘頻率:8m
(0006) //管腳分配:Pa0為使能位,Pa1為時序發生位,Pa2為+或-位
(0007) //
(0008) //注意事項:
(0009) //完成時間:2009.03.18
(0010) //************************************************
(0011)
(0012) //*************************************************
(0013) //頭文件
(0014) //************************************************
(0015) #include <iom16v.h>
(0016) #include <macros.h>
(0017) //************************************************
(0018)
(0019)
(0020) //**********************************************************
(0021) //函數名稱:void DELAY_1US(void)
(0022) //參數入口:無
(0023) //參數出口:無
(0024) //函數功能:延時1us
(0025) //注意事項:
(0026) //**********************************************************
(0027) void DELAY_1US(void)
(0028) {
(0029) NOP();
_DELAY_1US:
004B 0000 NOP
004C 9508 RET
_DELAY_NUS:
n --> R20
004D 940E00CE CALL push_gset1
004F 01A8 MOVW R20,R16
(0030) }
(0031) //**********************************************************
(0032) //函數名稱:void DELAY_NUS(void)
(0033) //參數入口:無
(0034) //參數出口:無
(0035) //函數功能:延時nus
(0036) //注意事項:
(0037) //**********************************************************
(0038) void DELAY_NUS(unsigned int n)
(0039) {
(0040) for(;n>0;n--)
0050 C003 RJMP 0x0054
(0041) DELAY_1US();
0051 DFF9 RCALL _DELAY_1US
0052 5041 SUBI R20,1
0053 4050 SBCI R21,0
0054 3040 CPI R20,0
0055 0745 CPC R20,R21
0056 F7D1 BNE 0x0051
0057 940E00D1 CALL pop_gset1
0059 9508 RET
(0042) }
(0043) //**********************************************************
(0044) //函數名稱:void DELAY_1MS(void)
(0045) //參數入口:無
(0046) //參數出口:無
(0047) //函數功能:延時1ms
(0048) //注意事項:i=143*n-2
(0049) //**********************************************************
(0050) void DELAY_1MS(void)
(0051) {
(0052) unsigned int i;
(0053) for(i=1142;i>0;i--)
_DELAY_1MS:
i --> R16
005A E706 LDI R16,0x76
005B E014 LDI R17,4
005C C002 RJMP 0x005F
005D 5001 SUBI R16,1
005E 4010 SBCI R17,0
005F 3000 CPI R16,0
0060 0701 CPC R16,R17
0061 F7D9 BNE 0x005D
0062 9508 RET
_DELAY_NMS:
n --> R20
0063 940E00CE CALL push_gset1
0065 01A8 MOVW R20,R16
(0054) ;
(0055) }
(0056) //**********************************************************
(0057) //函數名稱:void DELAY_1MS(void)
(0058) //參數入口:無
(0059) //參數出口:無
(0060) //函數功能:延時1ms
(0061) //注意事項:i=143*n-2
(0062) //**********************************************************
(0063) void DELAY_NMS(unsigned int n)
(0064) {
(0065) for(;n>0;n--)
0066 C003 RJMP 0x006A
(0066) DELAY_1MS();
0067 DFF2 RCALL _DELAY_1MS
0068 5041 SUBI R20,1
0069 4050 SBCI R21,0
006A 3040 CPI R20,0
006B 0745 CPC R20,R21
006C F7D1 BNE 0x0067
006D 940E00D1 CALL pop_gset1
006F 9508 RET
(0067) }
(0068) //**********************************************************
(0069) //函數名稱:void INIT_X9313(void)
(0070) //參數入口:無
(0071) //參數出口:無
(0072) //函數功能:是放大倍數為1
(0073) //注意事項:PD0為使能位,PD1為時序發生位,PD2為+或-位
(0074) //***************************************************
(0075) void PORT_INIT(void)
(0076) {
(0077) DDRC|=0X07;
_PORT_INIT:
0070 B384 IN R24,0x14
0071 6087 ORI R24,7
0072 BB84 OUT 0x14,R24
(0078) PORTC|=0X07;
0073 B385 IN R24,0x15
0074 6087 ORI R24,7
0075 BB85 OUT 0x15,R24
0076 9508 RET
_INIT_X9313:
n --> R20
0077 940E00CE CALL push_gset1
(0079) }
(0080) //**********************************************************
(0081) //函數名稱:void INIT_X9313(void)
(0082) //參數入口:無
(0083) //參數出口:無
(0084) //函數功能:是放大倍數為1
(0085) //注意事項:PD0為使能位,PD1為時序發生位,PD2為+或-位
(0086) //**********************************************************
(0087) void INIT_X9313(void)
(0088) {
(0089) unsigned char n;
(0090)
(0091) PORTC|=0X07;
0079 B385 IN R24,0x15
007A 6087 ORI R24,7
007B BB85 OUT 0x15,R24
(0092)
(0093) //PORTD=(1<<2);//方法倍數減操作
(0094) DELAY_NUS(1);
007C E001 LDI R16,1
007D E010 LDI R17,0
007E DFCE RCALL _DELAY_NUS
(0095)
(0096) PORTC&=~(1<<0);//使能操作
007F 98A8 CBI 0x15,0
(0097) DELAY_NUS(1);
0080 E001 LDI R16,1
0081 E010 LDI R17,0
0082 DFCA RCALL _DELAY_NUS
(0098)
(0099) for(n=35;n>0;n--)
0083 E243 LDI R20,0x23
0084 C00D RJMP 0x0092
(0100) {
(0101) PORTC|=(1<<1);//+
0085 9AA9 SBI 0x15,1
(0102) DELAY_NUS(2);
0086 E002 LDI R16,2
0087 E010 LDI R17,0
0088 DFC4 RCALL _DELAY_NUS
(0103) PORTC&=~(1<<1);
0089 98A9 CBI 0x15,1
(0104) DELAY_NUS(2);
008A E002 LDI R16,2
008B E010 LDI R17,0
008C DFC0 RCALL _DELAY_NUS
(0105) PORTC|=(1<<1);//+
008D 9AA9 SBI 0x15,1
(0106) DELAY_NUS(2);
008E E002 LDI R16,2
008F E010 LDI R17,0
0090 DFBC RCALL _DELAY_NUS
0091 954A DEC R20
0092 2422 CLR R2
0093 1624 CP R2,R20
0094 F380 BCS 0x0085
(0107) }
(0108) PORTC|=(1<<0);//使能操作
0095 9AA8 SBI 0x15,0
(0109) DELAY_NMS(20);
0096 E104 LDI R16,0x14
0097 E010 LDI R17,0
0098 DFCA RCALL _DELAY_NMS
0099 940E00D1 CALL pop_gset1
009B 9508 RET
_X9313_ADD:
n --> R20
009C 940E00CE CALL push_gset1
009E 2F40 MOV R20,R16
(0110)
(0111) }
(0112) //**********************************************************
(0113) //函數名稱:void X9313_ADD(unsigned char n)
(0114) //參數入口:無
(0115) //參數出口:無
(0116) //函數功能:放大n倍
(0117) //注意事項:PD0為使能位,PD1為時序發生位,PD2為-時放大
(0118) //**********************************************************
(0119) void X9313_ADD(unsigned char n)
(0120) {
(0121) PORTC|=0X07;
009F B385 IN R24,0x15
00A0 6087 ORI R24,7
00A1 BB85 OUT 0x15,R24
(0122)
(0123) PORTC&=~(1<<2);//方法倍數減操作
00A2 98AA CBI 0x15,2
(0124) DELAY_NUS(1);
00A3 E001 LDI R16,1
00A4 E010 LDI R17,0
00A5 DFA7 RCALL _DELAY_NUS
(0125)
(0126) PORTC&=~(1<<0);//使能操作
00A6 98A8 CBI 0x15,0
(0127) DELAY_NUS(1);
00A7 E001 LDI R16,1
00A8 E010 LDI R17,0
00A9 DFA3 RCALL _DELAY_NUS
(0128)
(0129) for(;n>0;n--)
00AA C00D RJMP 0x00B8
(0130) {
(0131) PORTC|=(1<<1);//+
00AB 9AA9 SBI 0x15,1
(0132) DELAY_NUS(2);
00AC E002 LDI R16,2
00AD E010 LDI R17,0
00AE DF9E RCALL _DELAY_NUS
(0133) PORTC&=~(1<<1);
00AF 98A9 CBI 0x15,1
(0134) DELAY_NUS(2);
00B0 E002 LDI R16,2
00B1 E010 LDI R17,0
00B2 DF9A RCALL _DELAY_NUS
(0135) PORTC|=(1<<1);//+
00B3 9AA9 SBI 0x15,1
(0136) DELAY_NUS(2);
00B4 E002 LDI R16,2
00B5 E010 LDI R17,0
00B6 DF96 RCALL _DELAY_NUS
00B7 954A DEC R20
00B8 2422 CLR R2
00B9 1624 CP R2,R20
00BA F380 BCS 0x00AB
(0137) }
(0138) PORTC|=(1<<0);//使能操作
00BB 9AA8 SBI 0x15,0
(0139) PORTC|=(1<<2);//方法倍數減操作
00BC 9AAA SBI 0x15,2
00BD 940E00D1 CALL pop_gset1
00BF 9508 RET
(0140) //DELAY_NMS(20);
(0141) }
(0142) //*************************************************
(0143) //主函數
(0144) //*************************************************
(0145) void main(void)
(0146) {
(0147) PORT_INIT();
_main:
00C0 DFAF RCALL _PORT_INIT
(0148) INIT_X9313();
00C1 DFB5 RCALL _INIT_X9313
(0149) X9313_ADD(1);
00C2 E001 LDI R16,1
00C3 DFD8 RCALL _X9313_ADD
(0150) while(1)
FILE: <library>
00C4 CFFF RJMP 0x00C4
00C5 9508 RET
push_gset5:
00C6 92FA ST R15,-Y
00C7 92EA ST R14,-Y
push_gset4:
00C8 92DA ST R13,-Y
00C9 92CA ST R12,-Y
push_gset3:
00CA 92BA ST R11,-Y
00CB 92AA ST R10,-Y
push_gset2:
00CC 937A ST R23,-Y
00CD 936A ST R22,-Y
push_gset1:
00CE 935A ST R21,-Y
00CF 934A ST R20,-Y
00D0 9508 RET
pop_gset1:
00D1 E0E1 LDI R30,1
pop:
00D2 9149 LD R20,Y+
00D3 9159 LD R21,Y+
00D4 FDE0 SBRC R30,0
00D5 9508 RET
00D6 9169 LD R22,Y+
00D7 9179 LD R23,Y+
00D8 FDE1 SBRC R30,1
00D9 9508 RET
00DA 90A9 LD R10,Y+
00DB 90B9 LD R11,Y+
00DC FDE2 SBRC R30,2
00DD 9508 RET
00DE 90C9 LD R12,Y+
00DF 90D9 LD R13,Y+
00E0 FDE3 SBRC R30,3
00E1 9508 RET
00E2 90E9 LD R14,Y+
00E3 90F9 LD R15,Y+
00E4 9508 RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -