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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cstartup.asm

?? 使用CYAN單片機(jī)的ECOG1開發(fā)板連接SIM300C的GSM模塊開發(fā)的短信收發(fā)程序.供UART和AT指令編程者參考
?? ASM
字號:
;==============================================================================; Cyan Technology Ltd;; FILE;  cstartup.asm - Assembler startup for C programs.;; DESCRIPTION;  Defines C segments. Contains initial code called before C is started;==============================================================================                  MODULE   cstartup                  .ALL;; C reserves DATA address 0 for the NULL pointer. The value H'DEAD is put in; here so that it is easier to spot the effect of a NULL pointer during; debugging. User memory for constants grows upwards from H'0001. The first; address is given the equate symbol $??LO_ADDR.;                  .SEG     C_RESERVED1                  ORG      0                  dc       H'DEAD$??LO_ADDR        EQU      $;; DATA addresses H'EFE0-H'EFFF are used for scratchpad RAM in interrupt mode.; DATA addresses H'EFC0-H'EFDF are used for scratchpad RAM in user mode.; DATA addresses H'EFB8-H'EFBF are used for register storage in interrupt mode.; Then follows the interrupt stack, user stack and user heap.; User memory for variables grows downwards from the end of the user stack.; This version of cstartup only contains one area of scratchpad RAM; which constrains users not to write re-entrant re-interruptable; code.; The interrupt stack must start at IY-38 to be compatible with the C compiler.;                  .SEG     C_RESERVED2                  ORG      H'EFB8$??HI_ADDR        DEQU     $                  ds       8           ; Interrupt register storage                  ds       32          ; User ScratchpadIY_SCRATCH        DEQU     $$?irq_scratchpad? DEQU     $                  ds       32          ; Interrupt Scratchpad;; The registers that control the functional blocks of the eCOG1 are located; at addresses H'FEA0 to H'FFCF. The C header file <ecog1.h> declares an; external structure that descibes the registers. This variable is defined; below.;                  .SEG     REGISTERS                  ORG      H'FEA0$fd:$rg               ds       304;; C requires the following segments:;     CONST  - Constants in ROM. For example:;                 const char c = 'c' ;;                 printf( "Hello World!" ) ;;     VAR    - Variables in RAM. These are set to zero by the cstartup code.;              For example:;                 int i ;              (in file scope);                 static int i ;       (in function scope);     INIT   - Initialisd variables in RAM. For example:;                 int i = 9 ;          (in file scope);                 static int i = 9 ;   (in function scope);     INITC  - Initialisation data for the INIT segment;     HEAP   - The heap. Required if malloc() etc. are used.;     STACK  - The stack. Always required.;; The memory allocated to each segment is defined by the value of; $??<segment_name>_SIZE as set below. These sizes can be set manually or, if; the appropriate line is tagged with !PACK and the -pack option is specified; to ECOGCL, ECOGCL will write in the size actually required for the segment.; The sizes of the STACK and HEAP segments must be set by the user.;$??ISTACK_SIZE    =        H'0040$??STACK_SIZE     =        H'0100$??HEAP_SIZE      =        H'0080; ROM segments$??INITC_SIZE     =        h'0000  ; !PACK$??CONST_SIZE     =        h'0002  ; !PACK; RAM segments$??INIT_SIZE      =        h'0000  ; !PACK$??VAR_SIZE       =        h'0000  ; !PACK; -- Locate DATA segments in memory --;; Segments are allocated sequentially by the ??ALLOCATE macro. They may be; set at fixed addresses by setting ADDR prior to calling ??ALLOCATE.;??ALLOCATE        MACRO    seg                  .SEG     &seg                  ORG      ADDR$??&seg!_LO       = ADDRADDR              = ADDR + $??&seg!_SIZE$??&seg!_HI       = ADDR-1                  ENDMAC; Allocate DATA ROMADDR              = $??LO_ADDR                  ??ALLOCATE INITC                  ??ALLOCATE CONST; Allocate DATA RAMADDR              = $??HI_ADDR - $??VAR_SIZE - $??INIT_SIZEADDR              = ADDR - $??ISTACK_SIZE - $??STACK_SIZE - $??HEAP_SIZE                  ??ALLOCATE INIT                  ??ALLOCATE VAR                  ??ALLOCATE HEAP                  ??ALLOCATE STACK                  ??ALLOCATE ISTACK; -- Memory initialisation macros --;; Segments may be initialised by filling with a constant value using the; ??SEGFILL macro.  Two symbols are passed, the segment name and the value to; fill with.  A third symbol (the size) is assumed.;??SEGFILL         MACRO    seg, value                  LOCAL    fill_loop                  IF       $??&seg!_SIZE                  ld       x, #$??&seg                  ld       al, #$??&seg!_SIZE                  ld       ah, &value&fill_loop:       st       ah, @(0,x)                  add      x, #1                  sub      al, #1                  bne      &fill_loop                  ENDIF                  ENDMAC;; Segments may be initialised by copying an initialisation segment with; the ??SEGCOPY macro. Two symbols are passed, the source and destination; segment names.;??SEGCOPY         MACRO    src, dest                  IF       $??&src!_SIZE NE $??&dest!_SIZE                  .ERR     "Copy segments different sizes"                  ENDIF                  IF       $??&src!_SIZE                  ld       x, #$??&src                  ld       y, #$??&dest                  ld       al, #$??&src!_SIZE                  bc                  ENDIF                  ENDMAC;; Fills a block of memory with a value. Three values are passed, the start; address for the block, the number of addresses to write to and the value; to be written.;??MEMFILL         MACRO    start, length, value                  LOCAL    fill_loop                  ld       x, &start                  ld       al, &length                  ld       ah, &value&fill_loop:       st       ah, @(0,x)                  add      x, #1                  sub      al, #1                  bne      &fill_loop                  ENDMAC;; Input argument for main().;                  .SEG     CONSTargv              dc       0,0         ; NULL as two-word byte address ;; Start of Code.;                  .CODE                  ORG      H'40$?cstart_code:		bra $ecog1ConfigMMU	; configure MMU and Cache Banks$ecog1ConfigContinue:;; Initialise segments. The HEAP and STACK are filled with H'9999 and H'aaaa; respectively so that their maximum runtime extents can be checked. The; INIT segment is set from the ROM initialisers in the INITC segment. The non; initialised RAM segment VAR is set to zero (compiler puts 0 initialised; variables in these segments as well as uninitialised ones,x).;                  ??SEGFILL HEAP, #h'9999                  ??SEGFILL STACK, #h'AAAA                  ??SEGFILL ISTACK, #h'BBBB                  ??SEGCOPY INITC, INIT                  ??SEGFILL VAR, #h'0; Set interrupt stack pointer.                  ld y, #IY_SCRATCH; Set user mode flag to allow interupts.                  st flags, @(-1,y)                  ld al, @(-1,y)                  or al, #h'10                  st al, @(-1,y)                  ld flags, @(-1,y); Set usermode stack pointer                  ld y, #$??STACK_HI; Call ecog1Config to setup eCOG1 peripherals; Defined in module produced by configuration compiler                  bsr $ecog1Config                ; Call main, setting argc and argv[0] to 0.                  ld ah, #argv                  ld al, #0                  bsr $main;; Main may exit by returning or by explicitly calling $exit. In either case; exit code will be in AL.;$exit:				  brk				; Alert the user if in debug mode                  bra 0             ; Restart;; This is the minimal interrupt routine. The contents of FLAGS is restored; as the program counter is restored using rti.;$minimal_handler:                  st flags,@(-33,y)    ; Store Flags                  st al, @(-34,y)      ; Store AL                  ld al, @(-33,y)      ; Put Flags into AL                  or al, #h'0010       ; Set usermode                  st al, @(-33,y)      ; Store the value to be restored to Flags				  brk				; Alert the user if in debug mode                  ld al, @(-34,y)      ; Restore AL                  rti @(-33,y)         ; Restore PC and Flags;; The address exception can happen often during development. A handler; is put here to catch the exception.;$address_error:        		st flags,@(-33,y)			; Store Flags				st al, @(-34,y)	; Store AL				ld al, @(-33,y)	; Put Flags into AL				or al, #h'0010	; Set usermode				st al, @(-33,y)	; Store the value to be restored to Flags				brk				; Alert the user if in debug mode				ld al, #h'a				st al, @h'ff69	; Clear status in mmu.address_exception				ld al, #h'200				st al, @h'ff7a	; Clear status in emi.ctrl_sts				ld al, @(-34,y)	; Restore AL				rti @(-33,y)		; Restore PC and Flags; End of startup code$??CSTARTUP_END	  EQU      $                  ENDMOD

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产麻豆| 欧美国产激情一区二区三区蜜月| 激情av综合网| 一区二区三区中文免费| 26uuu精品一区二区 | 91精品欧美一区二区三区综合在 | 久久婷婷色综合| 欧美日韩大陆在线| 91原创在线视频| 国产麻豆精品theporn| 亚洲成人精品一区二区| 国产精品国产精品国产专区不蜜 | 中文字幕的久久| 欧美丰满嫩嫩电影| 色噜噜偷拍精品综合在线| 国产高清一区日本| 欧美aaaaa成人免费观看视频| 亚洲日本一区二区三区| 久久只精品国产| 欧美一区二区三区日韩| 欧美日韩在线不卡| 在线视频国内自拍亚洲视频| 处破女av一区二区| 国产一区二区三区综合| 日韩中文字幕亚洲一区二区va在线| 亚洲视频一区在线| 国产精品毛片无遮挡高清| 日韩精品一区二| 日韩欧美另类在线| 欧美一区二区三区影视| 欧美日韩精品是欧美日韩精品| 色欧美日韩亚洲| av成人老司机| 99久久免费精品高清特色大片| 粉嫩一区二区三区在线看| 国产一区二区三区久久悠悠色av| 青娱乐精品视频在线| 免费一级片91| 久久99国产精品免费网站| 日韩有码一区二区三区| 调教+趴+乳夹+国产+精品| 亚洲图片一区二区| 午夜视频一区二区| 性久久久久久久| 五月婷婷综合在线| 免费日本视频一区| 精品中文av资源站在线观看| 另类中文字幕网| 国产一区 二区 三区一级| 国产成人av一区二区| 国产一区不卡视频| 成人白浆超碰人人人人| 91色.com| 欧美日韩在线播放三区四区| 91精品国产综合久久久久久久| 制服.丝袜.亚洲.中文.综合| 欧美一区二区二区| 精品国产免费视频| 国产亚洲成aⅴ人片在线观看| 国产日韩欧美高清| 亚洲欧洲av色图| 亚洲午夜影视影院在线观看| 天天色 色综合| 久久国产精品99久久久久久老狼| 国产一区二区三区国产| 成人激情视频网站| 日本久久电影网| 91精品视频网| 欧美国产欧美亚州国产日韩mv天天看完整 | 午夜欧美视频在线观看| 久久精品99国产精品日本| 国产成人精品影院| 色综合久久九月婷婷色综合| 欧美一区二区三区的| 国产欧美日韩在线视频| 亚洲香蕉伊在人在线观| 狠狠色综合播放一区二区| 91在线观看污| 欧美一区二区黄| 中文字幕一区二区不卡| 午夜日韩在线观看| 懂色av一区二区夜夜嗨| 精品视频一区 二区 三区| 精品少妇一区二区三区在线视频| 国产精品人妖ts系列视频| 天天色综合成人网| 成人激情校园春色| 欧美成人三级在线| 亚洲最色的网站| 国产精品影视天天线| 欧美日本免费一区二区三区| 久久精品夜色噜噜亚洲a∨| 亚洲成va人在线观看| 丁香婷婷综合网| 日韩欧美不卡一区| 亚洲精品写真福利| 国产一区二区主播在线| 欧美精品久久99| 亚洲人成人一区二区在线观看| 久久精品99国产精品日本| 色婷婷国产精品| 欧美国产禁国产网站cc| 日本vs亚洲vs韩国一区三区| 色婷婷国产精品综合在线观看| 久久亚洲影视婷婷| 天天综合网 天天综合色| 色综合天天做天天爱| 久久精品免费在线观看| 日本成人超碰在线观看| 色狠狠一区二区三区香蕉| 国产精品素人一区二区| 国产做a爰片久久毛片| 51久久夜色精品国产麻豆| 一区二区三区美女| 99久久综合精品| 国产精品免费视频一区| 国产一区二区三区美女| 日韩一区二区三区视频| 亚洲成人免费视| 色老头久久综合| 亚洲美女区一区| 成人毛片老司机大片| 久久人人97超碰com| 久久成人免费电影| 日韩欧美成人一区| 蜜桃av一区二区三区电影| 制服.丝袜.亚洲.另类.中文| 婷婷一区二区三区| 欧美日韩一区小说| 午夜国产精品一区| 欧美夫妻性生活| 午夜视频一区在线观看| 欧美日韩一级黄| 亚洲成人一区二区在线观看| 在线免费观看日本一区| 亚洲精品视频在线观看网站| 一本高清dvd不卡在线观看| 中文字幕日韩欧美一区二区三区| 成人激情视频网站| 日韩码欧中文字| 91福利精品视频| 亚洲电影一级黄| 欧美精品国产精品| 蜜芽一区二区三区| 日韩欧美一二三区| 国产精品亚洲专一区二区三区| 精品国产一区二区三区久久久蜜月 | 国精品**一区二区三区在线蜜桃| 精品国产第一区二区三区观看体验| 精品亚洲国内自在自线福利| 久久久久久久久久久久电影| 国产成人免费视| 亚洲色图欧美偷拍| 欧美日韩精品是欧美日韩精品| 日本欧美一区二区三区乱码| 日韩视频免费直播| 国产一区二区免费视频| 欧美韩日一区二区三区四区| av不卡在线观看| 香蕉久久夜色精品国产使用方法| 欧美一级欧美三级| 国产福利一区二区三区视频| 亚洲欧洲国产日韩| 欧美日韩小视频| 久久99深爱久久99精品| 日本一区二区久久| 欧美日韩亚洲综合在线| 久久99精品久久久久久| 国产精品不卡在线观看| 欧美日韩另类一区| 国产在线观看一区二区| 亚洲品质自拍视频| 日韩欧美aaaaaa| 国产精品剧情在线亚洲| 久久精品国产精品亚洲红杏 | 欧美tickling网站挠脚心| 国产综合一区二区| 一区二区三区四区中文字幕| 精品视频在线免费看| 国产一区二区三区综合| 一区二区三区四区不卡在线| 日韩欧美激情一区| 99精品热视频| 男女男精品视频| 亚洲区小说区图片区qvod| 欧美大白屁股肥臀xxxxxx| 色综合久久综合网| 久久国产精品72免费观看| 亚洲精选免费视频| 久久久亚洲国产美女国产盗摄| 在线观看免费一区| 国产伦精品一区二区三区在线观看| 一区在线观看免费| 日韩精品一区二区三区在线| 在线一区二区三区做爰视频网站| 蜜桃久久久久久| 亚洲国产一区视频| 中文无字幕一区二区三区 | 亚洲欧美偷拍三级| 久久综合九色综合97_久久久|