久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 14468|回復: 1
打印 上一主題 下一主題
收起左側

關于51單片機啟動文件STARTUP.A51的詳細說明

[復制鏈接]
跳轉到指定樓層
樓主
ID:284075 發表于 2018-8-18 19:30 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
;STARTUP.A51:用戶上電初始化程序
;------------------------------------------------------------------------------
;
; 用戶定義需上電初始化的內存空間
;
; 使用以下EQU命令可定義在CPU復位時需用0進行初始化的內存空間
;
; ;IDATA 存儲器的空間的絕對起始地址總是0.
IDATALENEQU 80H ; 需用0進行初始化的IDATA存儲器空間的字節數
;
XDATASTARTEQU 0H ; XDATA存儲器空間的絕對起始地址
XDATALENEQU 0H ; 需用0進行初始化的XDATA存儲器的空間字節數.
;
PDATASTARTEQU 0H ; PDATA存儲器的空間的絕對起始地址
PDATALENEQU 0H ; 需用0進行初始化的PDATA存儲器的空間字節數.
;
; 注意: IDATA 存儲器的空間在物理上包括了8051單片機的DATA和BIT存儲器空間.
; 聽說至少要保證與C51編譯器運行庫有關的存儲器的空間進行0初始化不知是否
;------------------------------------------------------------------------------
;
; 再入函數模擬初始化
;
; 以下用EQU指令定義了再入函數模擬堆棧指針的初始化
;
; 使用SMALL存儲器模式時再入函數的堆棧空間.
IBPSTACKEQU 0 ; 使用SMALL存儲器模式再入函數時將其設置成1.
IBPSTACKTOPEQU 0FFH+1 ; 將堆棧頂設置為最高地址+1.
;
; 使用LARGE存儲器模式時再入函數的堆棧空間.
XBPSTACKEQU 0 ; 使用LARGE存儲器模式再入函數時將其設置成1.
XBPSTACKTOPEQU 0FFFFH+1; 將堆棧頂設置為最高地址+1.
;
; 使用COMPACT存儲器模式時再入函數的堆棧空間.
PBPSTACKEQU 0 ; 使用COMPACT存儲器模式再入函數時將其設置成1.
PBPSTACKTOPEQU 0FFFFH+1; 將堆棧頂設置為最高地址+1.
;
;------------------------------------------------------------------------------
;
; 使用COMPACT存儲器模式時64K字節XDATA存儲器空間的分頁定義
;
; 以下用EQU指令定義PDATA類型變量在XDATA存儲器空間的頁地址
; 使用EQU指令定義PFAGE時必須與L51連接定位器PDATA指令的控制參數一致
;
PPAGEENABLEEQU 0 ; 使用PDATA類型變量時將其設置成1.
PPAGEEQU 0 ; 定義頁號.
;
;------------------------------------------------------------------------------
NAME?C_STARTUP ; 模塊名為?C_STAUTUP
?C_C51STARTUPSEGMENT CODE ; 代碼
?STACKSEGMENT IDATA ; 堆棧
RSEG?STACK ; 堆棧
DS 1
EXTRNCODE (?C_START) ; 程序開始地址
PUBLIC?C_STARTUP
CSEGAT 0x8000 ; 定義用戶程序的起始地址,用MON51仿真器時可能有用
?C_STARTUP:LJMP STARTUP1
RSEG?C_C51STARTUP
STARTUP1:
;
; 初始化串口
MOVSCON,#40H
MOVTMOD,#20H
MOVTH1,#0fdH
SETBTR1
CLRTI
; 單片機上電IDATA內存清零如果不需要上電清零IDATA可以注銷IF到IFEDN之間的話句
; 或者修改IDTALEN的長度為了具有掉電保護功能不知IDTALEN多長為好
IFIDATALEN <> 0
MOVR0,#IDATALEN - 1
CLR A
IDATALOOP:MOV @R0,A
DJNZR0,IDATALOOP
ENDIF
;
; 單片機上電XDATA內存清零如果不需要上電清零XDATA可以注銷IF到IFEDN之間的話句
; 或者修改XDATALEN的長度
IFXDATALEN <> 0
MOVDPTR,#XDATASTART
MOVR7,#LOW (XDATALEN)
IF(LOW (XDATALEN)) <> 0
MOVR6,#(HIGH (XDATALEN)) +1
ELSE
MOVR6,#HIGH (XDATALEN)
ENDIF
CLR A
XDATALOOP:MOVX @DPTR,A
INCDPTR
DJNZR7,XDATALOOP
DJNZR6,XDATALOOP
ENDIF
;
; 送PDATA存儲器頁面高位地址
IFPPAGEENABLE <> 0
MOVP2,#PPAGE
ENDIF
;
; 單片機上電PDATA內存清零如果不需要上電清零XDATA可以注銷IF到IFEDN之間的話句
; 或者修改PDATALEN的長度
IFPDATALEN <> 0
MOVR0,#PDATASTART
MOVR7,#LOW (PDATALEN)
CLR A
PDATALOOP:MOVX @R0,A
INCR0
DJNZR7,PDATALOOP
ENDIF
;
; 設置使用SMALL存儲器模式時再入函數的堆棧空間.
IFIBPSTACK <> 0
EXTRNDATA (?C_IBP)
MOV?C_IBP,#LOW IBPSTACKTOP
ENDIF
;
; 設置使用LARGE存儲器模式時再入函數的堆棧空間.
IFXBPSTACK <> 0
EXTRNDATA (?C_XBP)
MOV?C_XBP,#HIGH XBPSTACKTOP
MOV?C_XBP+1,#LOW XBPSTACKTOP
ENDIF
;
; 設置使用COMPACT存儲器模式時再入函數的堆棧空間.
IFPBPSTACK <> 0
EXTRNDATA (?C_PBP)
MOV?C_PBP,#LOW PBPSTACKTOP
ENDIF
;
; 設置堆棧的起始地址
MOVSP,#?STACK-1 ; 例如MOV SP,#4FH
;
;This code is required if you use L51_BANK.A51 with Banking Mode 4
; 如果你的程序使用了Mode 4 程序分組技術請啟動下面的程序,不會吧你的程序超過64K 利害
;EXTRN CODE (?B_SWITCH0)
;CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
; 程序從第一組bank 0 塊開始執行
; 跳轉到用戶程序MAIN函數
LJMP?C_START
END

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:333467 發表于 2019-6-10 14:21 | 只看該作者
好貼
謝謝,分享。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品精品久久久 | 激情网站 | 日韩精品在线网站 | 欧美日韩精品久久久免费观看 | 日韩二区 | 在线观看国产视频 | av中文在线 | 久久久久久美女 | 久久国产精品免费视频 | 视频一区在线观看 | 精品久久久久久久 | 亚洲精品福利在线 | 久久久国产视频 | 日本精品久久久久久久 | 色综合色综合 | 中文在线一区 | 国产精品国产三级国产aⅴ原创 | 综合网视频| 一级片av| 国产三级国产精品 | 久久一| 中文字幕在线观看一区二区 | 色资源站| 国产精品久久久久久久免费大片 | 男女视频在线观看网站 | 免费播放一级片 | 欧美精品久久久久 | 欧美黑人体内she精在线观看 | 爱爱免费视频 | 久久手机在线视频 | 在线一区二区观看 | 精品一区二区三区在线视频 | 国产中文字幕在线 | .国产精品成人自产拍在线观看6 | 日韩中文字幕一区二区三区 | 日韩资源 | 日韩欧美在线视频观看 | 欧美视频1区 | 91高清免费观看 | 成人18亚洲xxoo | 自拍偷拍视频网 |