?? ds12997.lis
字號:
0080 ;
0080 ;
0080 ; /*********************延時5000+0us 函數定義**********/
0080 ; void delay5ms(void)
0080 ; {
0080 .dbline 170
0080 ; uchar i,j;
0080 ; for(i=185;i>0;i--)
0080 09EB ldi R16,185
0082 07C0 xjmp L24
0084 L21:
0084 .dbline 171
0084 2CE0 ldi R18,12
0086 01C0 xjmp L28
0088 L25:
0088 .dbline 171
0088 L26:
0088 .dbline 171
0088 2A95 dec R18
008A L28:
008A .dbline 171
008A 2224 clr R2
008C 2216 cp R2,R18
008E E0F3 brlo L25
0090 L22:
0090 .dbline 170
0090 0A95 dec R16
0092 L24:
0092 .dbline 170
0092 2224 clr R2
0094 2016 cp R2,R16
0096 B0F3 brlo L21
0098 .dbline -2
0098 L20:
0098 .dbline 0 ; func end
0098 0895 ret
009A .dbsym r i 16 c
009A .dbsym r j 18 c
009A .dbend
009A .dbfunc e delay_1ms _delay_1ms fV
009A ; i -> R16,R17
.even
009A _delay_1ms::
009A .dbline -1
009A .dbline 175
009A ; for(j=12;j>0;j--);
009A ; }
009A ; /*****************延時1秒子函數*******************/
009A ; void delay_1ms(void)
009A ; {
009A .dbline 177
009A ; uint i;
009A ; for(i=1;i<(8*143-2);i++) //8為晶振頻率
009A 01E0 ldi R16,1
009C 10E0 ldi R17,0
009E 02C0 xjmp L33
00A0 L30:
00A0 .dbline 178
00A0 L31:
00A0 .dbline 177
00A0 0F5F subi R16,255 ; offset = 1
00A2 1F4F sbci R17,255
00A4 L33:
00A4 .dbline 177
00A4 0637 cpi R16,118
00A6 E4E0 ldi R30,4
00A8 1E07 cpc R17,R30
00AA D0F3 brlo L30
00AC .dbline -2
00AC L29:
00AC .dbline 0 ; func end
00AC 0895 ret
00AE .dbsym r i 16 i
00AE .dbend
00AE .dbfunc e delay_nms _delay_nms fV
00AE ; i -> R20,R21
00AE ; n -> R22,R23
.even
00AE _delay_nms::
00AE 0E940000 xcall push_gset2
00B2 B801 movw R22,R16
00B4 .dbline -1
00B4 .dbline 182
00B4 ; ;
00B4 ; }
00B4 ; /****************延時N毫秒子函數****************/
00B4 ; void delay_nms(uint n)
00B4 ; {
00B4 .dbline 184
00B4 ; uint i;
00B4 ; for(i=0;i<n;i++)
00B4 4427 clr R20
00B6 5527 clr R21
00B8 03C0 xjmp L38
00BA L35:
00BA .dbline 185
00BA EFDF xcall _delay_1ms
00BC L36:
00BC .dbline 184
00BC 4F5F subi R20,255 ; offset = 1
00BE 5F4F sbci R21,255
00C0 L38:
00C0 .dbline 184
00C0 4617 cp R20,R22
00C2 5707 cpc R21,R23
00C4 D0F3 brlo L35
00C6 .dbline -2
00C6 L34:
00C6 0E940000 xcall pop_gset2
00CA .dbline 0 ; func end
00CA 0895 ret
00CC .dbsym r i 20 i
00CC .dbsym r n 22 i
00CC .dbend
00CC .dbfunc e delay_8nus _delay_8nus fV
00CC ; i -> R22,R23
00CC ; k -> R20,R21
00CC ; n -> R16
.even
00CC _delay_8nus::
00CC 0E940000 xcall push_gset2
00D0 .dbline -1
00D0 .dbline 189
00D0 ; delay_1ms();
00D0 ; }
00D0 ; /****************精確延時微妙級,8MHZ,0.25us/step***********/
00D0 ; void delay_8nus(uchar n)
00D0 ; {
00D0 .dbline 191
00D0 ; uint i,k;
00D0 ; i=n;
00D0 602F mov R22,R16
00D2 7727 clr R23
00D4 .dbline 192
00D4 ; for(k=i;k>0;k--)
00D4 AB01 movw R20,R22
00D6 03C0 xjmp L43
00D8 L40:
00D8 .dbline 193
00D8 .dbline 194
00D8 0000 nop
00DA .dbline 195
00DA L41:
00DA .dbline 192
00DA 4150 subi R20,1
00DC 5040 sbci R21,0
00DE L43:
00DE .dbline 192
00DE 4030 cpi R20,0
00E0 4507 cpc R20,R21
00E2 D1F7 brne L40
00E4 X0:
00E4 .dbline -2
00E4 L39:
00E4 0E940000 xcall pop_gset2
00E8 .dbline 0 ; func end
00E8 0895 ret
00EA .dbsym r i 22 i
00EA .dbsym r k 20 i
00EA .dbsym r n 16 c
00EA .dbend
00EA .dbfunc e DS12887_Write _DS12887_Write fV
00EA ; Value -> R18
00EA ; Address -> R16
.even
00EA _DS12887_Write::
00EA .dbline -1
00EA .dbline 199
00EA ; {
00EA ; _NOP();
00EA ; }
00EA ; }
00EA ; /*******DS12887指定地址寫入數據 ,嚴格按照INTERL的時序,程序**********/
00EA ; void DS12887_Write( uchar Address, uchar Value)
00EA ; {
00EA .dbline 201
00EA ;
00EA ; P_AS_0;
00EA C398 cbi 0x18,3
00EC .dbline 202
00EC ; _NOP();
00EC 0000 nop
00EE .dbline 203
00EE ; _NOP();
00EE 0000 nop
00F0 .dbline 204
00F0 ; P_DS_1;
00F0 C19A sbi 0x18,1
00F2 .dbline 205
00F2 ; _NOP();
00F2 0000 nop
00F4 .dbline 206
00F4 ; _NOP();
00F4 0000 nop
00F6 .dbline 207
00F6 ; P_RW_1; //給出讀信號
00F6 C29A sbi 0x18,2
00F8 .dbline 208
00F8 ; _NOP();
00F8 0000 nop
00FA .dbline 209
00FA ; _NOP();
00FA 0000 nop
00FC .dbline 210
00FC ; P_AS_1; //鎖存信號高電平
00FC C39A sbi 0x18,3
00FE .dbline 211
00FE ; _NOP();
00FE 0000 nop
0100 .dbline 212
0100 ; _NOP();
0100 0000 nop
0102 .dbline 213
0102 ; AD_DDR = 0xFF; //數據口設置為輸出
0102 8FEF ldi R24,255
0104 8ABB out 0x1a,R24
0106 .dbline 214
0106 ; _NOP();
0106 0000 nop
0108 .dbline 215
0108 ; _NOP();
0108 0000 nop
010A .dbline 216
010A ; _NOP();
010A 0000 nop
010C .dbline 217
010C ; _NOP();
010C 0000 nop
010E .dbline 218
010E ; AD_PORT = Address; //給出地址
010E 0BBB out 0x1b,R16
0110 .dbline 219
0110 ; _NOP();
0110 0000 nop
0112 .dbline 220
0112 ; _NOP();
0112 0000 nop
0114 .dbline 221
0114 ; _NOP();
0114 0000 nop
0116 .dbline 222
0116 ; _NOP();
0116 0000 nop
0118 .dbline 223
0118 ; _NOP();
0118 0000 nop
011A .dbline 224
011A ; _NOP(); //
011A 0000 nop
011C .dbline 225
011C ; P_AS_0; //鎖存信號低電平
011C C398 cbi 0x18,3
011E .dbline 226
011E ; _NOP();
011E 0000 nop
0120 .dbline 227
0120 ; _NOP();
0120 0000 nop
0122 .dbline 228
0122 ; P_RW_0; //給出寫信號
0122 C298 cbi 0x18,2
0124 .dbline 229
0124 ; _NOP();
0124 0000 nop
0126 .dbline 230
0126 ; _NOP();
0126 0000 nop
0128 .dbline 231
0128 ; _NOP();
0128 0000 nop
012A .dbline 232
012A ; AD_PORT = Value; //寫出數據
012A 2BBB out 0x1b,R18
012C .dbline 233
012C ; _NOP();
012C 0000 nop
012E .dbline 234
012E ; _NOP();
012E 0000 nop
0130 .dbline 235
0130 ; _NOP();
0130 0000 nop
0132 .dbline 236
0132 ; _NOP();
0132 0000 nop
0134 .dbline 237
0134 ; _NOP();
0134 0000 nop
0136 .dbline 238
0136 ; _NOP();
0136 0000 nop
0138 .dbline 239
0138 ; _NOP();
0138 0000 nop
013A .dbline 240
013A ; _NOP();
013A 0000 nop
013C .dbline 241
013C ; P_RW_1; //給出讀信號
013C C29A sbi 0x18,2
013E .dbline 242
013E ; _NOP();
013E 0000 nop
0140 .dbline 243
0140 ; _NOP();
0140 0000 nop
0142 .dbline 244
0142 ; _NOP();
0142 0000 nop
0144 .dbline 245
0144 ; P_AS_1; //片選信號高電平
0144 C39A sbi 0x18,3
0146 .dbline 246
0146 ; _NOP();
0146 0000 nop
0148 .dbline 247
0148 ; _NOP();
0148 0000 nop
014A .dbline -2
014A L44:
014A .dbline 0 ; func end
014A 0895 ret
014C .dbsym r Value 18 c
014C .dbsym r Address 16 c
014C .dbend
014C .dbfunc e DS12887_Read _DS12887_Read fc
014C ; temp -> R20
014C ; Address -> R16
.even
014C _DS12887_Read::
014C 0E940000 xcall push_gset1
0150 .dbline -1
0150 .dbline 251
0150 ; }
0150 ; /*********DS12887指定地址中讀出數據,嚴格按照INTERL的時序!!!!!********/
0150 ; uchar DS12887_Read( uchar Address)
0150 ; {
0150 .dbline 252
0150 ; unsigned char temp = 0;
0150 4427 clr R20
0152 .dbline 253
0152 ; P_AS_0; //鎖存信號高電平
0152 C398 cbi 0x18,3
0154 .dbline 254
0154 ; _NOP();
0154 0000 nop
0156 .dbline 255
0156 ; _NOP();
0156 0000 nop
0158 .dbline 256
0158 ; P_DS_1;
0158 C19A sbi 0x18,1
015A .dbline 257
015A ; _NOP();
015A 0000 nop
015C .dbline 258
015C ; _NOP();
015C 0000 nop
015E .dbline 259
015E ; P_RW_1; //給出讀信號
015E C29A sbi 0x18,2
0160 .dbline 260
0160 ; _NOP();
0160 0000 nop
0162 .dbline 261
0162 ; _NOP();
0162 0000 nop
0164 .dbline 262
0164 ; P_AS_1; //鎖存信號高電平
0164 C39A sbi 0x18,3
0166 .dbline 263
0166 ; _NOP();
0166 0000 nop
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -