有關四位數溫度計之問題 |
缺席
|
salbit
一般會員 發表:3 回覆:0 積分:0 註冊:2005-05-26 發送簡訊給我 |
以下是我的程式部分...
不過一直測都用不好....
是否是中斷值之問題還是...??
謝謝了
RAM EQU 30H ;顯示器位址30H~35H PTR EQU 2FH ;顯示器掃描指標 ORG 00H JMP START ORG 0BH JMP TIM0 ;TIMER0中斷副程式 START: MOV SP,#70H ;設堆疊區在70H MOV PTR,#EFH ;七段顯示器掃描初值D1 MOV TMOD,#00000001B ;設TIMER0工作在MODE1 MOV TH0,#>(65536-4000) ;計時中斷4000微秒=4毫秒 MOV TL0,#<(65536-4000) MOV IE,#10000010B ;TIMER0中斷致能 SETB TR0 ;TIMER0啟動計時 MOV R0,#RAM ;顯示器記憶體位址30H~33H,定址在30H D1 START0: MOVX @R0,A JNB P2.0,$ MOVX A,@R0 CALL COUNT JMP START0 COUNT: CLR C MOV R5,#00H MOV R4,#00H MOV R3,#8 NEXT: RLC A MOV R2,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R2 DJNZ R3,NEXT MOV R7,#02 L2: MOV A,R5 ADD A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A DJNZ R7,L2 MOV A,R5 ;將R5個位存入33H,十位存入32H記憶體 MOV B,#10 DIV AB MOV RAM 3,B MOV RAM 2,A MOV A,R4 ;將R4個位存入31H,十位存入30H記憶體 MOV B,#10 DIV AB MOV RAM 1,B MOV RAM,A RET TIM0: PUSH ACC PUSH PSW MOV TH0,#>(65536-4000) ;重設計時中斷4000微秒=4毫秒 MOV TL0,#<(65536-4000) MOV A,PTR ;將顯示器掃描值移至高4位元 SWAP A ANL A,#F0H ;高4位元不變,低4位元為0 MOV B,A ;暫存入B暫存器 MOV A,@R0 ;間接定址,顯示器記憶體內容讀入A ORL A,B ;掃描值 顯示值 MOV P1,A ;輸出至P1掃描顯示 INC R0 ;掃描下一個顯示器 MOV A, PTR RL A MOV PTR,A CJNE A,#11111110B,S1 ;是否掃完4個顯示器?不是則跳至S1 MOV R0,#RAM ;重設顯示器記憶體定址30H MOV PTR,#EFH ;重設顯示器掃描指標 S1: POP PSW POP ACC RETI END |
penguin5
資深會員 發表:116 回覆:317 積分:431 註冊:2004-05-09 發送簡訊給我 |
程式顯示部份,應該沒有問題, 唯A/D轉換的程式,好像怪怪的!
START0: MOVX @R0,A JNB P2.0,$ MOVX A,@R0 CALL COUNT JMP START0您的問題應該是出在A/D轉換這部份,看不到有去控制ADC0804→(WR),(RD),(INTR). ●請貼出電路圖,才能進一步幫您抓臭蟲 ^_^ 歡迎參觀 麗嘉真空管研究室http://myweb.hinet.net/home4/penguin5 發表人 - penguin5 於 2005/06/03 12:20:52 |
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
程式改成這樣試試吧!
RAM EQU 30H ;顯示器位址30H~35H PTR EQU 2FH ;顯示器掃描指標 ORG 00H JMP START ORG 0BH JMP TIM0 ;TIMER0中斷副程式 ORG 50H START: MOV SP,#70H ;設堆疊區在70H MOV PTR,#EFH ;七段顯示器掃描初值D1 MOV TMOD,#00000001B ;設TIMER0工作在MODE1 MOV TH0,#>(65536-4000) ;計時中斷4000微秒=4毫秒 MOV TL0,#<(65536-4000) MOV IE,#10000010B ;TIMER0中斷致能 SETB TR0 ;TIMER0啟動計時 MOV R0,#RAM ;顯示器記憶體位址30H~33H,定 ;址在30H D1 START0: MOVX @R0,A JNB P2.0,$ MOVX A,@R0 CALL COUNT JMP START0 COUNT: CLR C MOV R5,#00H MOV R4,#00H MOV R3,#8 NEXT: RLC A MOV R2,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R2 DJNZ R3,NEXT MOV R7,#02 L2: MOV A,R5 ADD A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A DJNZ R7,L2 MOV A,R5 ;將R5個位存入33H,十位存入32H記憶體 MOV B,#10 DIV AB MOV RAM 3,B MOV RAM 2,A MOV A,R4 ;將R4個位存入31H,十位存入30H記憶體 MOV B,#10 DIV AB MOV RAM 1,B MOV RAM,A RET TIM0: PUSH ACC PUSH PSW MOV TH0,#>(65536-4000);重設計時中斷4000微秒=4毫秒 MOV TL0,#<(65536-4000) MOV A,PTR ;將顯示器掃描值移至高4位元 SWAP A ANL A,#F0H ;高4位元不變,低4位元為0 MOV B,A ;暫存入B暫存器 MOV A,@R0 ;間接定址,顯示器記憶體內容讀入A ORL A,B ;掃描值 顯示值 MOV P1,A ;輸出至P1掃描顯示 INC R0 ;掃描下一個顯示器 MOV A, PTR RL A MOV PTR,A CJNE A,#11111110B,S1 ;是否掃完4個顯示器?不是則跳至S1 MOV R0,#RAM ;重設顯示器記憶體定址30H MOV PTR,#EFH ;重設顯示器掃描指標 S1: POP PSW POP ACC RETI END==================================== 生命的目的,在幻化出多采多姿的組合。 生活的意義,在捕捉住稍縱即逝的感動。====================================
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |