• slider image 514
  • slider image 516
  • slider image 517
  • slider image 518
  • slider image 519
:::


Browsing this Thread:   1 Anonymous Users






誰有W401 ex2,3,4,5 的標準答案 ?
#1
中級會員
中級會員


查看用戶資訊
W401 Exercise 內 ex2,3,4,5 問號部份填不出來
不知誰有asm 程式 ?
( 我用 pic18f452 + 外部 8MHz crystal )
以下是自作實習板及 自己填的ex2及ex3 程式, 請指教
縮圖
;**************************************************************************
;**** File : Ex2.asm
;**** 設計一個一秒鐘讓 PORTD 的 LED 自動加一的程式
;**************************************************************************
list p = 18F452
#include <p18F452.inc>
;
Temp EQU b'00000001'
TMR1_VAL EQU .2000 ; Timer1 設定為 500ms 中斷一次
;********************************************************************
;**** RESET Vector @ 0x0000
;********************************************************************
org 0x0000
bra Main
;
org 0x0008
bra Hi_ISRs
;
;********************************************************************
;**** The Main Program start from Here !!
;********************************************************************
org 0x002A
Main:
call Init_IO
call Init_Timer1
;
bsf RCON,IPEN ; Enable Interrupt priority
bsf INTCON,GIEH ; Enable all High Priority Interrupt
;
Null_Loop

goto Null_Loop ; Do loop here
;
;***********************************************************************
;**** Initial the PORTD for the output port
;***********************************************************************
Init_IO
movlw 0FFH
movwf ADCON1
movlw 0FFH
movwf TRISC
clrf TRISD
movlw b'00000001'
movwf PORTD
return
;***********************************************************************
;**** Initial Timer1 as a 500ms Timer
;***********************************************************************
Init_Timer1
movlw 0CFH ; 16-bit mode , Prescaler = 1:1 , Async mode
movwf T1CON ; Use external 32768Hz crystal , Timer1 On
;
movlw (.65536-TMR1_VAL)/.256 ; Calcute the MSB value for the Timer1
movwf TMR1H
movlw (.65536-TMR1_VAL)%.256 ; Calcute the LSB value for the Timer1
movwf TMR1L
;
movlw 001H ; Set Timer1 for high priority interrupt
movwf PIE1 ; Clear Timer1 Interrupt flag
movlw 001H
movwf IPR1
bcf PIR1, TMR1IF
bsf PIE1, TMR1IE ; Enable Timer1 Interrupt
return
;***************************************************************************************
;**** ISRs() : 中斷服務程式
;****
;***************************************************************************************
Hi_ISRs
bcf PIR1, TMR1IF ; Clear Timer1 Interrupt flag
;
movlw (.65536-TMR1_VAL)/.256 ; Calcute the MSB value for the Timer1
movwf TMR1H
movlw (.65536-TMR1_VAL)%.256 ; Calcute the LSB value for the Timer1
movwf TMR1L
addwfc PORTD,Temp
; infsnz PORTD ; PORTD = PORTD + 1;
retfie FAST ; Return with shadow register
;
END

;**************************************************************************
;**** File : Ex3.asm
;**** Read VR1 with the analog voltage input and convert the voltage
;**** to 8-bit digital on LED
;**************************************************************************

list p = 18F452
include <p18F452.inc>

;
C_Hold_Delay equ 0x20
;
;********************************************************************
;**** RESET Vector @ 0x0000
;********************************************************************

org 0x0000 ;
bra Main
;
org 0x0008 ;
bra Hi_ISRs
;
;********************************************************************
;**** The Main Program start from Here !!
;********************************************************************

org 0x002A
Main:
call Init_IO
call Init_AD
;
AD_Loop rcall C_Hold_Time ; Delay 50uS for the sample hold time
bsf ADCON0, GO ; Start convert the A/D
nop ; Nop
Check btfsc ADCON0, GO ; Check the A/D completed ?
goto Check ; A/D isn't completed yet, continut check.
swapf ADRESH, w ; save the a/D result with MSB to
;
andlw 0x0F
movwf PORTD
nop
rcall C_Hold_Time
goto AD_Loop
;***********************************************************************
;**** Initial the PORTD for the output port
;***********************************************************************
Init_IO:
clrf TRISD
clrf PORTD
;
bsf TRISA,RA0 ; Set RA0 with input mode
;
return
;***********************************************************************
;**** Initial A/D Converter
;***********************************************************************
Init_AD:
movlw b'00001110' ; Left Justified, Fosc/32
movwf ADCON1 ; Set AN0 for the Analog Input
;
movlw b'10000001' ; Fosc/32 , Select AN0 channel
movwf ADCON0 ; A/D on
;
bsf PIE1,ADIE ; Disable interrupt of A/D

return
;
;
;***********************************************************************
;**** Sample Hold (Charge) time delay routine (50uS)
;***********************************************************************
C_Hold_Time:
movlw 020H
movwf C_Hold_Delay
nop
decfsz C_Hold_Delay,F
bra $-4
return

;***************************************************************************************
;**** ISRs() : High priority interrupt service routine
;****
;***************************************************************************************
Hi_ISRs
retfie FAST ; Return with shadow register
;
END


發表於: 2006/7/17 11:33
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------