新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 利用2051單片機燒錄24C02,04,08,16

        利用2051單片機燒錄24C02,04,08,16

        作者: 時間:2016-11-30 來源:網絡 收藏
        SCL BIT P3.2;EEPROM母片
        SDA BIT P3.3SCL1 BIT P1.2;寫入目標EEPROMSDA1 BIT P1.3ORG 0000HLJMP A1ORG 002BHA1: MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHA2: CLR P1.7;燒錄成功指示燈SETB P3.7;燒錄失敗指示燈JB P1.6,$;燒錄按鍵LCALL M001JNB P1.6,$CLR P1.7;燒錄時同時亮CLR P3.7;燒錄時同時亮MOV 39H,#0A0H;寫第一頁MOV 38H,#0A1H;讀第一頁MOV 37H,#1;總頁數A3: JB P1.5,A4;判斷外部選擇開關JB P1.4,A01;00---24C02MOV 37H,#1;1頁JMP A02;01---24C04A01: MOV 37H,#2;2頁JMP A02A4: JB P1.4,A5;10---24C08MOV 37H,#4;4頁JMP A02 ;11---24C16A5: MOV 37H,#8;8頁A02:X24C021:MOV 40H,#0;位置MOV 43H,#0FFH;一頁總數X24C022:LCALL R24C02;讀母片數據MOV 41H,32H;存到目標板子片數據寄存器CALL W24C02;將母片數據寫到INC 40H;地址加1DJNZ 43H,X24C022;判斷是否完成255個LCALL R24C02;完成255個再寫1個公256個數MOV 41H,32H;CALL W24C02;MOV 40H,#0;位置MOV 43H,#0FFH;一頁總數INC 39H;寫頁碼加1由于頁碼是在123位不是在0位所以要加2次1INC 39H;INC 38H;讀頁碼INC 38H;DJNZ 37H,X24C022;判斷是否完成所以頁碼;********************************************************************;  比較是否相等;********************************************************************MOV 39H,#0A0H;寫第一頁MOV 38H,#0A1H;讀第一頁MOV 37H,#1;總頁數D24C021:MOV 40H,#0;位置MOV 43H,#0FFH;一頁總數D24C022:LCALL R24C02;讀母片數據MOV 41H,32H;保存母片數據CALL R24C02_1;讀子片數據MOV A,32H;CJNE A,41H,D24C023;判斷子片數據是否=母片數據INC 40H;數據位置加1DJNZ 43H,D24C022;判斷是否完成255個數對比LCALL R24C02;讀母片數據MOV 41H,32H;保存母片數據CALL R24C02_1;讀子片數據MOV A,32H;CJNE A,41H,D24C023;判斷子片數據是否=母片數據MOV 40H,#0;位置MOV 43H,#0FFH;一頁總數INC 39H;INC 39H;INC 38H;INC 38H;DJNZ 37H,D24C022;JMP A2D24C023:SETB P1.7;燒錄出錯母片數據不等于子片數據CLR P3.7;亮指示燈JB P1.6,$;按燒錄鍵反回LCALL M001;JNB P1.6,$;CALL M003;JMP A2;W24C02: LCALL START1;開始子程序MOV A,39H;寫模式LCALL WRITE;寫數據MOV A,40H;存儲位置LCALL WRITEMOV A,41H;存儲數據LCALL WRITELCALL STOP1;結束LCALL M001RETM001: MOV 30H,#3M002: MOV 31H,#250DJNZ 31H,$DJNZ 30H,M002RETM003: MOV 3AH,#4M004: MOV 3BH,#248M005: MOV 3CH,#248DJNZ 3CH,$DJNZ 3BH,M005DJNZ 3AH,M004RETR24C02: LCALL START;開始子程序MOV A,39HLCALL WRITE0MOV A,40H;存儲位置LCALL WRITE0LCALL STARTMOV A,38H;讀模式LCALL WRITE0LCALL READ;讀取數據LCALL STOPRETR24C02_1:LCALL START1;開始子程序MOV A,39HLCALL WRITEMOV A,40H;存儲位置LCALL WRITELCALL START1MOV A,38H;讀模式LCALL WRITELCALL READ_1;讀取數據LCALL STOP1RETWRITE0: MOV R7,#8WRITE01:RLC AMOV SDA,CSETB SCLNOPNOPNOPNOPCLR SCLNOPDJNZ R7,WRITE01NOPNOPNOPLCALL ACKNOPNOPRET;寫WRITE: MOV R7,#8WRITE1: RLC AMOV SDA1,CSETB SCL1NOPNOPNOPNOPCLR SCL1NOPDJNZ R7,WRITE1NOPNOPNOPLCALL ACK1NOPNOPRET;讀READ: MOV R7,#8READ1: SETB SDASETB SCLMOV C,SDARLC AMOV 32H,ANOPNOPNOPNOPCLR SCLDJNZ R7,READ1LCALL NACKNOPNOPRET;讀READ_1: MOV R7,#8READ01: SETB SDA1SETB SCL1MOV C,SDA1RLC AMOV 32H,ANOPNOPNOPNOPCLR SCL1DJNZ R7,READ01LCALL NACK1NOPNOPRET;應答ACK:   CLR SDA                 ;響應程序段  應答程序NOPSETB SCLNOPNOPNOPNOPCLR SCLNOPNOPRETNACK:  SETB SDA                     ;非應答程序段NOPNOPSETB SCLNOPNOPNOPNOPCLR SCLNOPRET;開始START: SETB SCLSETB SDANOPNOPCLR SDANOPNOPNOPNOPCLR SCLRET;結束STOP: SETB SCLCLR SDANOPNOPNOPNOPSETB SDARET;*********************************************;應答ACK1:  CLR SDA1                 ;響應程序段  應答程序NOPSETB SCL1NOPNOPNOPNOPCLR SCL1NOPNOPRETNACK1: SETB SDA1                     ;非應答程序段NOPNOPSETB SCL1NOPNOPNOPNOPCLR SCL1NOPRET;開始START1: SETB SCL1SETB SDA1NOPNOPCLR SDA1NOPNOPNOPNOPCLR SCL1RET;結束STOP1: SETB SCL1CLR SDA1NOPNOPNOPNOPSETB SDA1RETendSCL BIT P3.2;EEPROM母片SDA BIT P3.3SCL1 BIT P1.2;寫入目標EEPROMSDA1 BIT P1.3ORG 0000HLJMP A1ORG 002BHA1: MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFH
        				
                    
                        
        			
        							
        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 塔城市| 图木舒克市| 泰宁县| 夏津县| 宣恩县| 大城县| 石景山区| 峨山| 安丘市| 象州县| 镇远县| 洛南县| 临夏市| 延庆县| 德钦县| 蓬安县| 绥宁县| 赣州市| 晋城| 呼伦贝尔市| 青川县| 烟台市| 托克托县| 同仁县| 岑溪市| 大港区| 资源县| 安徽省| 阳原县| 修武县| 黄龙县| 顺昌县| 静宁县| 株洲县| 得荣县| 黔南| 邢台市| 浦城县| 保康县| 汝南县| 郑州市|