亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 51.lst

?? 筆者的《用M8L制作的89S51單片機 USB下載線》在無線電2007年第9期已刊登過
?? LST
?? 第 1 頁 / 共 3 頁
字號:
__text_start:
__start:
    001A E5CF      LDI	R28,0x5F
    001B E0D4      LDI	R29,4
    001C BFCD      OUT	0x3D,R28
    001D BFDE      OUT	0x3E,R29
    001E 51C0      SUBI	R28,0x10
    001F 40D0      SBCI	R29,0
    0020 EA0A      LDI	R16,0xAA
    0021 8308      STD	Y+0,R16
    0022 2400      CLR	R0
    0023 E6E0      LDI	R30,0x60
    0024 E0F0      LDI	R31,0
    0025 E010      LDI	R17,0
    0026 38EC      CPI	R30,0x8C
    0027 07F1      CPC	R31,R17
    0028 F011      BEQ	0x002B
    0029 9201      ST	R0,Z+
    002A CFFB      RJMP	0x0026
    002B 8300      STD	Z+0,R16
    002C E3E4      LDI	R30,0x34
    002D E0F0      LDI	R31,0
    002E E6A0      LDI	R26,0x60
    002F E0B0      LDI	R27,0
    0030 E010      LDI	R17,0
    0031 33E4      CPI	R30,0x34
    0032 07F1      CPC	R31,R17
    0033 F021      BEQ	0x0038
    0034 95C8      LPM
    0035 9631      ADIW	R30,1
    0036 920D      ST	R0,X+
    0037 CFF9      RJMP	0x0031
    0038 D2A8      RCALL	_main
_exit:
    0039 CFFF      RJMP	_exit
_SendInstrc:
  n                    --> R20
  nByte                --> R16
    003A D306      RCALL	push_gset1
FILE: E:\學習專區\AVR專區\個人創作區\ICC\s51.c
(0001) ///////////////////////////////////////////////////////////////////////////////////////////////////
(0002) //FID=02:AT89S51系列編程器 
(0003) //實現編程的讀,寫,擦等細節
(0004) ///////////////////////////////////////////////////////////////////////////////////////////////////
(0005) #include <iom8v.h>
(0006) #include <macros.h>
(0007) #include<signal.h>
(0008) #include<e51pro.h>
(0009) #define uchar unsigned char 
(0010) BYTE OutBuf[4];//發送命令緩沖
(0011) BYTE InBuf[4];//接收緩沖
(0012) void SendInstrc(uchar nByte)//用MOSI串行發送命令的同時用MISO接收相關數據
(0013) {
(0014) uchar n=0;
    003B 2744      CLR	R20
(0015) DDRB=(1<<PB5)|(1<<PB3)|(1<<PB2);
    003C E28C      LDI	R24,0x2C
    003D BB87      OUT	0x17,R24
(0016) SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR0);//SCK時鐘為fosc/16
    003E E581      LDI	R24,0x51
    003F B98D      OUT	0x0D,R24
(0017) for (n=0;n<nByte;n++)
    0040 C013      RJMP	0x0054
(0018) {
(0019) SPDR=OutBuf[n];
    0041 E684      LDI	R24,0x64
    0042 E090      LDI	R25,0
    0043 2FE4      MOV	R30,R20
    0044 27FF      CLR	R31
    0045 0FE8      ADD	R30,R24
    0046 1FF9      ADC	R31,R25
    0047 8020      LDD	R2,Z+0
    0048 B82F      OUT	0x0F,R2
(0020) while (!(SPSR&(1<<SPIF)))
    0049 9B77      SBIS	0x0E,7
    004A CFFE      RJMP	0x0049
(0021) ;
(0022) InBuf[n]=SPDR;
    004B E680      LDI	R24,0x60
    004C E090      LDI	R25,0
    004D 2FE4      MOV	R30,R20
    004E 27FF      CLR	R31
    004F 0FE8      ADD	R30,R24
    0050 1FF9      ADC	R31,R25
    0051 B02F      IN	R2,0x0F
    0052 8220      STD	Z+0,R2
    0053 9543      INC	R20
    0054 1740      CP	R20,R16
    0055 F358      BCS	0x0041
    0056 D2ED      RCALL	pop_gset1
    0057 9508      RET
(0023) }
(0024) }
(0025) void InitPro02()//編程前的準備工作
(0026) {
(0027) DDRB=0xff;
_InitPro02:
    0058 EF8F      LDI	R24,0xFF
    0059 BB87      OUT	0x17,R24
(0028) PORTB&=~BIT(PB2);
    005A 98C2      CBI	0x18,2
(0029) Delay_ms(10);
    005B E00A      LDI	R16,0xA
    005C E010      LDI	R17,0
    005D D100      RCALL	_Delay_ms
(0030) PORTB|=BIT(PB2);
    005E 9AC2      SBI	0x18,2
(0031) PORTC|=BIT(PB1);
    005F 9AA9      SBI	0x15,1
(0032) PORTC&=~BIT(PB0);
    0060 98A8      CBI	0x15,0
(0033) Delay_ms(10);
    0061 E00A      LDI	R16,0xA
    0062 E010      LDI	R17,0
    0063 D0FA      RCALL	_Delay_ms
(0034) nAddress=0x0000;
    0064 2422      CLR	R2
    0065 2433      CLR	R3
    0066 9230008B  STS	nAddress+1,R3
    0068 9220008A  STS	nAddress,R2
(0035) OutBuf[0]=0xac;//正好在這里可以安排DataSheet上所規定的
    006A EA8C      LDI	R24,0xAC
    006B 93800064  STS	OutBuf,R24
(0036) OutBuf[1]=0x53;//Eanable Programming命令
    006D E583      LDI	R24,0x53
    006E 93800065  STS	OutBuf+1,R24
(0037) OutBuf[2]=0;
    0070 92200066  STS	OutBuf+2,R2
(0038) OutBuf[3]=0;
    0072 92200067  STS	OutBuf+3,R2
(0039) SendInstrc(4);
    0074 E004      LDI	R16,4
    0075 DFC4      RCALL	_SendInstrc
    0076 9508      RET
(0040) }
(0041) 
(0042) void ProOver02()//編程結束后的工作,設置合適的引腳電平
(0043) {
(0044) PORTC|=BIT(PB0);
_ProOver02:
    0077 9AA8      SBI	0x15,0
(0045) PORTC&=~BIT(PB1);
    0078 98A9      CBI	0x15,1
(0046) DDRB=0x00;
    0079 2422      CLR	R2
    007A BA27      OUT	0x17,R2
    007B 9508      RET
(0047) }
(0048) uchar ComBuf[18];
(0049) uchar Read02()
(0050) {
(0051) OutBuf[0]=0x20;
_Read02:
    007C E280      LDI	R24,0x20
    007D 93800064  STS	OutBuf,R24
(0052) OutBuf[1]=((uchar*)&nAddress)[1];
    007F 9020008B  LDS	R2,nAddress+1
    0081 92200065  STS	OutBuf+1,R2
(0053) OutBuf[2]=((uchar*)&nAddress)[0];
    0083 E8EA      LDI	R30,0x8A
    0084 E0F0      LDI	R31,0
    0085 8020      LDD	R2,Z+0
    0086 92200066  STS	OutBuf+2,R2
(0054) SendInstrc(4);
    0088 E004      LDI	R16,4
    0089 DFB0      RCALL	_SendInstrc
(0055) return InBuf[3];
    008A 91000063  LDS	R16,InBuf+3
    008C 9508      RET
(0056) }
(0057) 
(0058) void ReadSign02()//讀特征字
(0059) {
(0060) 	InitPro02();//先設置成編程狀態
_ReadSign02:
    008D DFCA      RCALL	_InitPro02
(0061) //-----------------------------------------------------------------------------
(0062) 	//根據器件的DataSheet,設置相應的編程控制信號
(0063) 	OutBuf[0]=0x28;
    008E E288      LDI	R24,0x28
    008F 93800064  STS	OutBuf,R24
(0064) 	OutBuf[1]=0x00;
    0091 2422      CLR	R2
    0092 92200065  STS	OutBuf+1,R2
(0065) 	OutBuf[2]=0x00;
    0094 92200066  STS	OutBuf+2,R2
(0066) 	OutBuf[3]=0x00;
    0096 92200067  STS	OutBuf+3,R2
(0067) 	SendInstrc(4);
    0098 E004      LDI	R16,4
    0099 DFA0      RCALL	_SendInstrc
(0068) 	ComBuf[2]=InBuf[3];
    009A 90200063  LDS	R2,InBuf+3
    009C 9220006A  STS	ComBuf+2,R2
(0069) 	OutBuf[1]=0x01;
    009E E081      LDI	R24,1
    009F 93800065  STS	OutBuf+1,R24
(0070) 	SendInstrc(4);
    00A1 E004      LDI	R16,4
    00A2 DF97      RCALL	_SendInstrc
(0071) 	ComBuf[3]=InBuf[3];
    00A3 90200063  LDS	R2,InBuf+3
    00A5 9220006B  STS	ComBuf+3,R2
(0072) 	OutBuf[1]=0x02;
    00A7 E082      LDI	R24,2
    00A8 93800065  STS	OutBuf+1,R24
(0073) 	SendInstrc(4);
    00AA E004      LDI	R16,4
    00AB DF8E      RCALL	_SendInstrc
(0074) 	ComBuf[4]=InBuf[3];
    00AC 90200063  LDS	R2,InBuf+3
    00AE 9220006C  STS	0x6C,R2
(0075) //-----------------------------------------------------------------------------
(0076) 	ProOver02();
    00B0 DFC6      RCALL	_ProOver02
    00B1 9508      RET
(0077) }
(0078) 
(0079) void Erase02()//擦除器件
(0080) {
(0081) 	InitPro02();
_Erase02:
    00B2 DFA5      RCALL	_InitPro02
(0082) //-----------------------------------------------------------------------------
(0083) 	//根據器件的DataSheet,設置相應的編程控制信號
(0084) 	OutBuf[0]=0xac;
    00B3 EA8C      LDI	R24,0xAC
    00B4 93800064  STS	OutBuf,R24
(0085) 	OutBuf[1]=0x80;
    00B6 E880      LDI	R24,0x80
    00B7 93800065  STS	OutBuf+1,R24
(0086) 	SendInstrc(4);
    00B9 E004      LDI	R16,4
    00BA DF7F      RCALL	_SendInstrc
(0087) 	Delay_ms(50);	
    00BB E302      LDI	R16,0x32
    00BC E010      LDI	R17,0
    00BD D0A0      RCALL	_Delay_ms
(0088) //-----------------------------------------------------------------------------
(0089) 	ProOver02();
    00BE DFB8      RCALL	_ProOver02
    00BF 9508      RET
_Write02:
  Data                 --> R20
    00C0 D280      RCALL	push_gset1
    00C1 2F40      MOV	R20,R16
(0090) }
(0091) 
(0092) BOOL Write02(BYTE Data)//寫器件
(0093) {
(0094) 
(0095) //-----------------------------------------------------------------------------
(0096) 	//根據器件的DataSheet,設置相應的編程控制信號
(0097) 	//寫一個單元
(0098) 	OutBuf[0]=0x40;
    00C2 E480      LDI	R24,0x40
    00C3 93800064  STS	OutBuf,R24
(0099) 	OutBuf[1]=((BYTE*)&nAddress)[1];
    00C5 9020008B  LDS	R2,nAddress+1
    00C7 92200065  STS	OutBuf+1,R2
(0100) 	OutBuf[2]=((BYTE*)&nAddress)[0];
    00C9 E8EA      LDI	R30,0x8A
    00CA E0F0      LDI	R31,0
    00CB 8020      LDD	R2,Z+0
    00CC 92200066  STS	OutBuf+2,R2
(0101) 	OutBuf[3]=Data;
    00CE 93400067  STS	OutBuf+3,R20
(0102) 	SendInstrc(4);
    00D0 E004      LDI	R16,4
    00D1 DF68      RCALL	_SendInstrc
(0103) 	nTimeOut=0;
    00D2 2422      CLR	R2
    00D3 2433      CLR	R3
    00D4 92300089  STS	nTimeOut+1,R3
    00D6 92200088  STS	nTimeOut,R2
    00D8 C014      RJMP	0x00ED
(0104) 	while(Read02()!=Data)//效驗:循環讀,直到讀出與寫入的數相同
(0105) 	{
(0106) 		nTimeOut++;
    00D9 91800088  LDS	R24,nTimeOut
    00DB 91900089  LDS	R25,nTimeOut+1
    00DD 9601      ADIW	R24,1
    00DE 93900089  STS	nTimeOut+1,R25
    00E0 93800088  STS	nTimeOut,R24
(0107) 		if(nTimeOut>1000)//超時了
    00E2 EE88      LDI	R24,0xE8
    00E3 E093      LDI	R25,3
    00E4 90200088  LDS	R2,nTimeOut
    00E6 90300089  LDS	R3,nTimeOut+1
    00E8 1582      CP	R24,R2
    00E9 0593      CPC	R25,R3
    00EA F410      BCC	0x00ED
(0108) 		{
(0109) 			return  0;
    00EB 2700      CLR	R16
    00EC C004      RJMP	0x00F1
    00ED DF8E      RCALL	_Read02
    00EE 1704      CP	R16,R20
    00EF F749      BNE	0x00D9
(0110) 		}
(0111) 				
(0112) 	}
(0113) //-----------------------------------------------------------------------------
(0114) 	return 1;
    00F0 E001      LDI	R16,1
    00F1 D252      RCALL	pop_gset1
    00F2 9508      RET
(0115) }
(0116) void Lock02()//寫鎖定位
(0117) {
(0118) //-----------------------------------------------------------------------------
(0119) 	//根據器件的DataSheet,設置相應的編程控制信號
(0120) 	if(ComBuf[2]>=1)//ComBuf[2]為鎖定位
_Lock02:
    00F3 9180006A  LDS	R24,ComBuf+2
    00F5 3081      CPI	R24,1
    00F6 F060      BCS	0x0103
(0121) 	{
(0122) 		InitPro02();
    00F7 DF60      RCALL	_InitPro02
(0123) 		OutBuf[0]=0xac;
    00F8 EA8C      LDI	R24,0xAC
    00F9 93800064  STS	OutBuf,R24
(0124) 		OutBuf[1]=0xe1;
    00FB EE81      LDI	R24,0xE1
    00FC 93800065  STS	OutBuf+1,R24
(0125) 		SendInstrc(4);
    00FE E004      LDI	R16,4
    00FF DF3A      RCALL	_SendInstrc
(0126) 		Delay_ms(1);
    0100 E001      LDI	R16,1
    0101 E010      LDI	R17,0
    0102 D05B      RCALL	_Delay_ms
(0127) 	}
(0128) 	if(ComBuf[2]>=2)
    0103 9180006A  LDS	R24,ComBuf+2
    0105 3082      CPI	R24,2
    0106 F060      BCS	0x0113
(0129) 	{
(0130) 		InitPro02();
    0107 DF50      RCALL	_InitPro02
(0131) 		OutBuf[0]=0xac;
    0108 EA8C      LDI	R24,0xAC
    0109 93800064  STS	OutBuf,R24
(0132) 		OutBuf[1]=0xe2;
    010B EE82      LDI	R24,0xE2
    010C 93800065  STS	OutBuf+1,R24
(0133) 		SendInstrc(4);
    010E E004      LDI	R16,4
    010F DF2A      RCALL	_SendInstrc
(0134) 		Delay_ms(1);
    0110 E001      LDI	R16,1
    0111 E010      LDI	R17,0
    0112 D04B      RCALL	_Delay_ms
(0135) 	}
(0136) 	if(ComBuf[2]==3)
    0113 9180006A  LDS	R24,ComBuf+2
    0115 3083      CPI	R24,3
    0116 F461      BNE	0x0123
(0137) 	{
(0138) 		InitPro02();
    0117 DF40      RCALL	_InitPro02
(0139) 		OutBuf[0]=0xac;
    0118 EA8C      LDI	R24,0xAC
    0119 93800064  STS	OutBuf,R24
(0140) 		OutBuf[1]=0xe3;
    011B EE83      LDI	R24,0xE3
    011C 93800065  STS	OutBuf+1,R24
(0141) 		SendInstrc(4);
    011E E004      LDI	R16,4
    011F DF1A      RCALL	_SendInstrc
(0142) 		Delay_ms(1);
    0120 E001      LDI	R16,1
    0121 E010      LDI	R17,0
    0122 D03B      RCALL	_Delay_ms
(0143) 	}
(0144) //-----------------------------------------------------------------------------
(0145) 	ProOver02();
    0123 DF53      RCALL	_ProOver02
    0124 9508      RET
(0146) }
(0147) void PreparePro02()//設置pw中的函數指針,讓主程序可以調用上面的函數
(0148) {
(0149) 	pw.fpInitPro=InitPro02;
_PreparePro02:
    0125 E382      LDI	R24,0x32
    0126 E090      LDI	R25,0
    0127 9390007B  STS	pw+1,R25
    0129 9380007A  STS	pw,R24
(0150) 	pw.fpReadSign=ReadSign02;
    012B E380      LDI	R24,0x30
    012C E090      LDI	R25,0
    012D 9390007D  STS	pw+3,R25
    012F 9380007C  STS	pw+2,R24
(0151) 	pw.fpErase=Erase02;
    0131 E28E      LDI	R24,0x2E
    0132 E090      LDI	R25,0
    0133 9390007F  STS	0x7F,R25

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91福利资源站| 日韩一级大片在线观看| 99久久综合99久久综合网站| 欧美三级欧美一级| 国产亚洲欧美色| 亚洲观看高清完整版在线观看| 久热成人在线视频| 色网站国产精品| 国产视频一区在线播放| 婷婷国产在线综合| 成人午夜伦理影院| 91麻豆精品国产自产在线 | 成人性生交大片| 欧美另类变人与禽xxxxx| 国产精品三级久久久久三级| 美女视频一区二区| 欧美日本不卡视频| 一区二区国产视频| 国产99精品国产| 精品国产成人系列| 日本欧美韩国一区三区| 在线免费视频一区二区| 国产精品国产馆在线真实露脸 | 中文字幕一区二区三区av| 美脚の诱脚舐め脚责91| 欧美日韩一区二区三区在线看| 中文字幕一区日韩精品欧美| 国产aⅴ综合色| 精品国产免费久久| 久久99国产精品久久| 日韩天堂在线观看| 日韩电影在线一区二区三区| 欧美日韩国产一级| 婷婷丁香久久五月婷婷| 欧洲日韩一区二区三区| 亚洲一区二区三区中文字幕| 在线观看免费成人| 一区2区3区在线看| 欧美性一区二区| 亚洲国产婷婷综合在线精品| 欧美做爰猛烈大尺度电影无法无天| 亚洲人吸女人奶水| 91色|porny| 亚洲激情欧美激情| 欧美亚洲综合在线| 亚洲.国产.中文慕字在线| 一区二区欧美国产| jlzzjlzz国产精品久久| 亚洲欧洲色图综合| 在线精品视频一区二区三四| 亚洲一区二区三区在线看| 欧美日韩精品免费| 日韩电影免费在线看| 日韩欧美综合在线| 国产成人在线网站| 亚洲特黄一级片| 欧美三级电影网| 秋霞影院一区二区| 久久婷婷色综合| 成人美女视频在线看| 亚洲日穴在线视频| 欧美裸体bbwbbwbbw| 久久不见久久见免费视频1| 国产婷婷精品av在线| 92精品国产成人观看免费| 亚洲一区二区视频| 精品日韩99亚洲| 91在线国产福利| 日韩精品亚洲一区二区三区免费| 精品国产一区久久| 91在线观看免费视频| 亚洲一区欧美一区| 久久精品男人天堂av| 91网页版在线| 久久草av在线| 亚洲综合在线五月| 久久日韩精品一区二区五区| 91麻豆精东视频| 狠狠色狠狠色综合系列| 玉米视频成人免费看| 亚洲精品一线二线三线| 91免费观看在线| 国产在线麻豆精品观看| 亚洲一区二区欧美日韩| 久久久久国产成人精品亚洲午夜 | 成人午夜av影视| 亚洲aⅴ怡春院| 日本一区二区综合亚洲| 91精品久久久久久蜜臀| 91在线精品一区二区三区| 麻豆精品久久久| 一区二区三区视频在线看| 久久久久久一二三区| 在线不卡免费av| 91丨九色丨尤物| 国产精品一级在线| 美美哒免费高清在线观看视频一区二区| 国产精品看片你懂得| 久久日韩粉嫩一区二区三区| 91.com视频| 欧美怡红院视频| 99精品视频在线观看| 国产传媒久久文化传媒| 久久99精品一区二区三区三区| 亚洲h精品动漫在线观看| 亚洲人午夜精品天堂一二香蕉| 亚洲精品一区二区三区蜜桃下载 | 国产一区二区三区视频在线播放| 天天综合天天做天天综合| 亚洲精品国久久99热| 国产精品情趣视频| 欧美日韩不卡一区二区| 中文字幕视频一区二区三区久| 欧美精品tushy高清| 色婷婷综合久久久| www.日韩av| av中文字幕亚洲| 99九九99九九九视频精品| 大胆亚洲人体视频| 成人精品一区二区三区四区| 国产一区二区成人久久免费影院| 毛片av一区二区| 麻豆一区二区在线| 麻豆91精品视频| 国产在线精品国自产拍免费| 国产呦萝稀缺另类资源| 国产高清亚洲一区| 成人性生交大片免费看中文| av综合在线播放| 91麻豆国产精品久久| 欧美性欧美巨大黑白大战| 欧美揉bbbbb揉bbbbb| 欧美日本在线观看| 日韩精品中文字幕一区二区三区 | 亚洲线精品一区二区三区| 亚洲美腿欧美偷拍| 一区二区三区在线看| 午夜精品久久久久久久蜜桃app| 五月天丁香久久| 久久精品国产99| 成人国产电影网| 91久久精品一区二区| 欧美一区二区三区系列电影| 国产亚洲精品精华液| 亚洲色图另类专区| 天天综合天天做天天综合| 国产在线乱码一区二区三区| av一区二区不卡| 欧美情侣在线播放| 2023国产精品视频| 亚洲精品第1页| 美腿丝袜在线亚洲一区| 成人综合婷婷国产精品久久免费| 日本大香伊一区二区三区| 91麻豆精品久久久久蜜臀| 国产三级一区二区| 一区二区三区中文在线| 精品亚洲成av人在线观看| 91在线观看高清| 欧美一级二级三级乱码| 中文字幕一区二区三区视频| 性久久久久久久久| 丁香婷婷综合网| 欧美日韩日日夜夜| 国产精品国产三级国产aⅴ无密码| 污片在线观看一区二区| 成人福利电影精品一区二区在线观看| 欧美性猛片xxxx免费看久爱 | 欧美欧美午夜aⅴ在线观看| 久久综合色鬼综合色| 亚洲影视资源网| 国产高清精品网站| 日韩欧美区一区二| 国产午夜精品久久| 亚洲一区二区四区蜜桃| 国产精一品亚洲二区在线视频| 日本久久电影网| 久久久综合视频| 亚洲成人免费视频| 波多野结衣亚洲一区| 精品日韩成人av| 天堂成人免费av电影一区| 99久久伊人网影院| 国产三级精品视频| 日本va欧美va精品发布| 欧美亚洲一区二区在线| 中文字幕精品一区| 国产一区二区在线影院| 91精品国产综合久久久久久久久久| 一区二区三区四区在线播放| 成人精品一区二区三区四区 | 丁香桃色午夜亚洲一区二区三区| 欧美精品 国产精品| 亚洲精品写真福利| 99久久久国产精品免费蜜臀| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲主播在线播放| 99久久99久久精品免费看蜜桃| 久久综合av免费| 精品亚洲国内自在自线福利|