一.請論 reset pin之功用,以及 reset 後,8051內部之初值是如何?
二.請設計一解碼硬体,控制四個週邊ic,其地址如下:U1(0000-3FFFH)
 U2(4000H-7FFFH),U3(8000H-bFFFH),U4(C000H-FFFFH),不限IC
三.請解釋 MOV,MOVX,MOVC之差異,及 MOVX A,@DPTR與 MOVX A,@R0之差異
四.請設計一組語,由1累加至100,BIN及 BCD各一程式

初學者想知道自己評分,可以貼上,60分及格可考慮升助理工程師,80分以上立即升助
助理工程師

----------考卷訂正--------------------
一.請論 reset pin之功用,以及 reset 後,8051內部之初值是如何?
Ans:1.讓單晶片程式知道要從哪裡開始執行
   2.PC = 0000h , ACC = 00h  , B = 00h    , PSW  = 00h , SP = 07h       , DPTR = 0000h
     P0 = FFh   , P1 = FFh   , P2 = FFh   , P3 = FFh   , IP = xxx00000b , IE = 0xx00000b
     TMOD = 00h , TCON = 00h , T0 = 0000h , T1 = 0000h , SCON = 00h     , SBUF = 00h

在Reset發生時,reset pin 必須維持至少2個機械週期.
Reset後,P0~P3回復成輸入狀態
CPU從位址0000H開始執行
Reset 的功能是在當CPU冷啟動或是暖啟動或是被干擾而重置時,
有一個起始執行的開端,不管是重新開始執行或是繼續執行未完成的工作,
程式設計者都必須知道,程式現在在哪裡.
----------------------------------------------------------------------------------------------------------------------
關於Reset 腳的功能,除了[重置]這個字面意義以外,應該還包含了系統穩定的功能,
上面說到reset的時間要有2個機械週期,必須是mpu判定為High(或是low)一定時間,
如果太短,會視為雜訊而不理會。
一般開機時,必須等到電源穩定才會開始工作,而週邊各IC工作電壓不一定都一樣,
可以利用Reset來delay(也可以使用軟體delay),一段時間後,各週邊都穩定,才解除Reset,
可以週邊同時開始運作,避免一些不穩定或是不正常的現象發生。
----------------------------------------------------------------------------------------------------------------------------
RESET 之定義,還是未到精隨,必須再加強,reset 之解說
movc 可以再補充一點,當提取 rom資料時,如果 rom 是外部 rom
則 psen 會有訊息 
提示一下,不止 mpu,cpu才有 reset,凡大
型 vlsi以上皆有,及 mpu,vlsi皆由很多部份組合起,那麼我請問你,
電源由0v上昇至5v時,是0v垂直至5v,還是0v斜度上昇至5v,
請問各部門之工作電壓一致嗎?講到此,能領悟者就領悟,
不能領悟者,其 mpu硬体皆是懂得皮毛
--------------------------------------------------------------------------
二.請設計一解碼硬体,控制四個週邊ic,其地址如下:U1(0000-3FFFH)
U2(4000H-7FFFH),U3(8000H-DFFFH),U4(C000H-FFFFH),不限IC
Ans:U1 = /b15 and /b14
   U2 = /b15 and b14
   U3 = (b15 and /b14) or (b15 and /b13)
   U4 = b15 and b14

   U3 和 U4 有位址重疊
--------------------------------------------------------------------------
三.請解釋 MOV,MOVX,MOVC之差異,及 MOVX A,@DPTR與 MOVX A,@R0之差異
Ans:
MOV->立即定址法,直接定址法,暫存器定址法,暫存器間接定址法
   MOVX ->外部記憶體暫存器間接定址法
   movc ->索引定址法

MOV->立即定址法,直接定址法,暫存器定址法,暫存器間接定址法
MOV指令執行時,是存取內部的RAM,不會使讓 /RD /WR 的信號有動作

MOVX ->外部記憶體暫存器間接定址法
使用MOVX時,因是對外部資料記憶體作存取,所以會使/RD /WR 的信號相對致能

movx a,@DPTR與 movx a,@r0差異,未解釋
皆是從外部資料記憶體經P0取得資料
movx a,@DPTR-->16位元定址,P0為資料,A7~A0位址,P2為A8~A15位址
movx a,@r0------>8位元定址,P0為資料,A7~A0位址,P2內容不受影響


MOVC ->索引定址法
可以配合PC讀取ROM的資料
可以配合DPTR存取RAM的資料
主要使用於查表或是提取程式記憶體內容
/*-----------------------------------------------------------------------*/
movc 可以再補充一點,當提取 rom資料時,如果 rom 是外部 rom
則 psen 會有訊息
/*-------------------------------------------------------------------------*/
四.請設計一組語,由1累加至100,BIN及 BCD各一程式
Ans:
2.BCD
/*-----------------------------------------------------------------------------------------*/

MOV30h,#00;Counter Lo byte
MOV31h,#00;Counter Hi byte

MOV32h,#00;Total Lo byte
MOV33h,#00;Total Hi byte
L1:
MOVA,30h
ADDA,#1
DAA
MOV30h,A
MOVA,31h
ADDCA,#0
DAA
MOV31h,A

MOVA,32h
ADDA,30h
DAA
MOV32h,A

MOVA,33h
ADDCA,31h
DAA
MOV33h,A


MOVA,31h
CJNEA,#01h,L1
MOVA,30h
CJNEA,#00h,L1
/*-----------------------------------------------------------------------------------*/

----------------------------------------------------------------------------------------------
訂正BCD

;==========================================
Total   equ     30h
      mov     Total,#0        ;預設100h
      mov     Total+1,#1      ;
;----------------------------------------
      mov     r3,#1           ;由1加至99h
$loop0  mov     r2,#2           ;2
       mov   b,r3
      mov     r0,#Total
      clr     c               ;low 不加進位

$loop1  mov     a,@r0
      addc    a,b
      da      a
      mov     @r0,a

      inc     r0              ;第二byte
      mov   b,#0
      djnz    r2,$loop1

      mov     a,r3
      add     a,#1
      da      a
      mov     r3,a
     
      jnz     $loop0          ;=0時,結束
      ret
-------------------------------------------------------------------------------------------

 


 
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Kelly Kelly 的頭像
    Kelly Kelly

    Kelly Kelly的部落格

    Kelly Kelly 發表在 痞客邦 留言(1) 人氣()