微控制器時鐘程式中Msecond 255什麼意思

2022-07-07 16:57:55 字數 10289 閱讀 3209

1樓:做而論道

-1,在計算機中,用補碼表示,這就是255。

這是《倒計時》的程式。

拿變數seconde來說,它的正確數值範圍應該是0~59。

減一、減一...,減到-1(即255)時,就改成59。

c程式,這就是下面這一段:

……seconde--;

if(seconde==255) //秒鐘設為60進製

{ seconde=59;……

2樓:匿名使用者

就是判斷這個變數的值是否等於255

3樓:

是這樣的,在8位機系統中,0-1的結果是255。

比如說:現在時間是0:0.

00(0分0秒00毫秒當程式接收到10毫秒中斷時,00-1(倒計時)的結果是-1,在8位機中就是255,因為是百進製,這時就首先應該把它修正為99毫秒,然後,秒數也要-1。

當秒為0時,-1後,同樣得到255這樣的結果,而實際上,-1後應該是59秒,因而減1後,也要判斷一下是不是255,如果是,同樣要把它修正為59……

餘此類推。

注意:在c語音中,減1的結果為255的先決條件是,變數是無符號短整型數!!!!

不知道我說明白沒?

希望能幫到你

微控制器時鐘程式 24小時制 20

4樓:東穎崇

沒什麼難的啊,就是個顯示程式,再用個定時器就好了- -!

5樓:酷酷一號

我真想自己試著編這個程式。

6樓:

c語言的:

#include

#include

unsigned char ledbuf[8];

code unsigned char ledmap = ; //8段顯示

void delay(unsigned char cnt)

#define tick 7554

#define t100us (256-134)

unsigned char hour,minute,second,ankey;

unsigned int c100us;

void sees()

void displayled()

}void key()

}if(p33==0)

}if(p35==0)}}

}void t0int()interrupt 1}}

}void main()

}彙編的:

org 0000h

ajmp main

org 000bh

ajmp time

org 0300h

main:

mov p3,#0ffh;

mov 25h,#00h;

mov r0,#40h;

mov 20h,#00h;

mov 21h,#00h;

mov 22h,#00h;

mov 23h,#00h;

mov p2,#0ffh

mov ip,#02h;

mov ie,#82h;

mov tmod,#01h;

mov tl0,#0b0h;

mov th0,#3ch;

setb tr0;

mov sp,#50h;

next:

lcall disp;

lcall key;

jz next;

lcall ankey;

sjmp next;

nopnop;

nop;

time:

push acc;

push psw;

mov tl0,#0b4h;

mov th0,#3ch;

inc 20h;

mov a,20h;

cjne a,#20,reti1;

mov 20h,#00h;

mov a,21h;

inc a;

mov 21h,a;

cjne a,#3ch,reti1;

mov 21h,#00h;

mov a,22h;

add a,#01h;

mov 22h,a;

cjne a,#3ch,reti1;

mov 22h,#00h;

mov a,23h;

add a,#01h;

mov 23h,a;

cjne a,#18h,reti1;

mov 23h,#00h;

reti1:

pop psw;

pop acc;

reti;

nopnop

disp:

mov a,21h;

mov b,#10;

div ab;

mov 41h,a;

mov 40h,b;

mov a,22h;

mov b,#10;

div ab;

mov 43h,a;

mov 42h,b;

mov a,23h;

mov b,#10;

div ab;

mov 45h,a;

mov 44h,b;

mov r0,#40h

lcall disp2; 1

clr p2.0;

lcall delay;

setb p2.0;

inc r0;

lcall disp2;

clr p2.1;

lcall delay;

setb p2.1;

mov p0,#0bfh;

clr p2.2 ;

lcall delay;

setb p2.2;

inc r0;

lcall disp2;

clr p2.3;

lcall delay;

setb p2.3;

inc r0;

lcall disp2;

clr p2.4;

lcall delay;

setb p2.4;

mov p0,#0bfh;

clr p2.5;

lcall delay;

setb p2.5;

inc r0;

lcall disp2;

clr p2.6;

lcall delay;

setb p2.6;

inc r0;

lcall disp2;

clr p2.7;

lcall delay;

setb p2.7;

mov r0,#40h;

disp2:

mov dptr,#table;

mov a,@r0;

movc a,@a+dptr;

mov p0,a;

retdelay:

mov r6,#255;

d2:djnz r6,d2;

ret;

table:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h

; 0 1 2 3 4 5 6 7 8 9

;按鍵判斷程式

key:

mov a,p3;

cpl a;

anl a,#3ch;

jz retx ;無鍵按下則返回

lcall disp ;

lcall delay;

mov a,p3;

cpl a;

anl a,#3ch;

jz retx ;無鍵按下則返回

mov r6,a ;將鍵值存入r6。

loop2: lcall disp ;

mov a,p3;

cpl a;

anl a,#3ch;

jnz loop2 ;等待鍵釋放

mov a,r6;

retx:

mov p3,#0ffh;

ret;

nopnop

;按鍵處理子程式

ankey: clr ea;關中斷

lx: mov a,r6;

jb acc.2,l1;是功能鍵轉l1

jb acc.3,l2;是確認鍵轉l2

jb acc.4,l3;是減1鍵轉l3

jnb acc.5,l12;不是增1鍵,轉l12

jb 2bh.4,l6;判斷使哪一位(時、分、秒)的值加1

jb 2dh.4,l8;

jb 2fh.4,l9;

l12: lcall disp;

lcall disp;

lcall key;判斷有無鍵按下。

jz l12;

ljmp lx;

l2: mov 25h,#00h ;確認鍵處理程式

clr 2bh.4;

clr 2dh.4;

clr 2fh.4;

setb ea;

ret;

l3: jb 2bh.4,l61;減一鍵處理程式

jb 2dh.4,l81;

jb 2fh.4,l91;

ajmp l12;

l1: mov a,25h;功能鍵處理程式

jz lb1;

jb acc.0,lb2;

jb acc.1,lb3;

jnb acc.2,l12;

lb1: mov 25h,#01h;25h單元是標誌位,(25h)=01h調節時單元的值

setb 2bh.4;

clr 2dh.4;

clr 2fh.4;

ajmp l12;

lb3: mov 25h,#04h;25h單元是標誌位,(25h)=04h調節秒單元的值

setb 2fh.4;

clr 2dh.4;

clr 2bh.4;

ajmp l12;

lb2: mov 25h,#02h;25h單元是標誌位,(25h)=02h調節分單元的值

setb 2dh.4;

clr 2bh.4;

clr 2fh.4;

ajmp l12;

l61: ajmp l611;

l81: ajmp l811;

l91: ajmp l911;

l112:ajmp l12;

l6: mov a,23h;時加一

inc a;

mov 23h,a;

cjne a,#24h,l12;

mov 23h,#00h;

ajmp l12;

l8: mov a,22h;分加一

inc a;

mov 22h,a;

cjne a,#60h,l12;

mov 22h,#00h;

ajmp l12;

l9: mov a,21h;秒加一

inc a;

mov 21h,a;

cjne a,#60h,l12;

mov 21h,#00h;

ajmp l12;

l611: mov a,23h;時減一

dec a;

mov 23h,a;

cjne a,#00h,l112;

mov 23h,#23h;

ajmp l12;

l811: mov a,22h;分減一

dec a;

mov 22h,a;

cjne a,#00h,l112;

mov 22h,#59h

ajmp l12;

l911: mov a,21h;秒減一

dec a;

mov 21h,a;

cjne a,#00h,l112;

mov 21h,#59h;

ajmp l12;

nopnopend

微控制器做時鐘程式

7樓:匿名使用者

hour equ 030h

minute equ 031h

second equ 032h

count1 equ 033h;總計數到4000:拆分成40*100count2 equ 034h

spl equ 020h;閃爍判斷的依據

set_btn equ 021h;

org 0000h

ajmp main

org 001bh

ajmp it_1

org 040h

main:

mov spl,#00h

clr spl.0

clr spl.1

clr spl.2

mov dptr,#table

mov hour,#00h

mov minute,#00h

mov second,#00h

mov count1,#00h

mov count2,#00h

mov tmod,#20h

mov th1,#06h

mov tl1,#06h

mov ie,#10001000b;設定允許中斷,並且開啟兩個定時器setb tr1

loop:

jnb p0.0,just_time

jb set_btn.0,just_timejnb p0.1, subb_time

jb set_btn.1,subb_timejnb p0.2, add_time

jb set_btn.2,add_timetime: acall hour_showacall minute_show

ajmp loop

subb_time:

jb set_btn.1,wait_btn2_upacall delay2;

jb p0.1, time

setb set_btn.1

jb spl.1,subb_hour

jb spl.2,subb_min

ajmp time

subb_min:

mov r1,minute

cjne r1,#00h,subb_min_optajmp time

subb_min_opt:

dec minute

ajmp time

subb_hour:

mov r1,hour

cjne r1,#00h,subb_hour_optajmp time

subb_hour_opt:

dec hour

ajmp time

wait_btn2_up:

jnb p0.1,time

clr set_btn.1

ajmp time

add_time:

jb set_btn.2,wait_btn3_upacall delay2;

jb p0.2, time

setb set_btn.2

jb spl.1,add_hour

jb spl.2,add_min

ajmp time

add_min:

mov r1,minute

cjne r1,#3bh,add_min_optajmp time

add_min_opt:

inc minute

ajmp time

add_hour:

mov r1,hour

cjne r1,#17h,add_hour_optajmp time

add_hour_opt:

inc hour

ajmp time

wait_btn3_up:

jnb p0.2,time

clr set_btn.2

ajmp time

just_time:

jb set_btn.0,wait_up

acall delay2;防抖

jb p0.0, time

setb set_btn.0

jb spl.2, clr_m

jnb spl.1, set_h

clr spl.1

set_m: setb spl.2;分鐘位置ajmp time

set_h: setb spl.1;小時位置clr_m: clr spl.2

ajmp time

ljump_time:ljmp time

wait_up: jnb p0.0,ljump_timeclr set_btn.0

ajmp time

wait2_dl1:

acall delay1

acall delay1

rethour_show:

jnb spl.1, hour_show_hrerjb spl.0, hour_show_hreracall wait2_dl1

rethour_show_hrer:

setb p2.0

setb p2.1

clr a

mov a,hour

mov b,#0ah

div ab

movc a,@a+dptr

mov p1,#00h

mov p1,a

clr p2.0

;延時acall delay1

setb p2.0

mov p1,#00h

mov a,b

movc a,@a+dptr

mov p1,a

clr p2.1

;延時acall delay1

setb p2.1

mov p1,#00h

retminute_show:

jnb spl.2, minute_show_herejb spl.0, minute_show_hereacall wait2_dl1

retminute_show_here:

setb p2.2

setb p2.3

clr a

mov a,minute

mov b,#0ah

div ab

movc a,@a+dptr

mov p1,#00h

mov p1,a

clr p2.2

;延時acall delay1

setb p2.2

mov p1,#00h

mov a,b

movc a,@a+dptr

mov p1,a

clr p2.3

;延時acall delay1

setb p2.3

mov p1,#00h

retdelay1: ;短延時

mov r6,#03h

dl1: mov r7,08h

dl2: djnz r7,dl2

djnz r6,dl1

retdelay2: ;按鍵延時

mov r6,#0ah

dl21: mov r7,0ah

dl22: djnz r7,dl22

djnz r6,dl21

retit_1:

push acc

push b

push psw

inc count1

mov a,count1

cjne a,#28h,reti_lableinc count2

mov count1,#00h

mov a,count2

mov b,#32h

div ab

mov a,b

jnz c2_opt

cpl p3.7;秒的閃爍

cpl spl.0

;inc spl;給閃爍設定值

c2_opt: mov a,count2

cjne a,#64h,reti_lableinc second

mov count2,#00h

mov a,second

cjne a,#3ch,reti_lable;

inc minute

mov second,#00h

mov a,minute

cjne a,#3ch,reti_lable;

inc hour

mov minute,#00h

mov a,hour

cjne a,#18h,reti_lablemov hour,#00h

reti_lable:

pop psw

pop b

pop acc

reti

table: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,40hend

微控制器程式注釋,微控制器程式注釋(大致注釋)

嘿嘿 還是俺來幫你回答吧 1 這是乙個一位的7段數碼管顯示控制程式,通過p3口連線了乙個7段數碼管 靜態顯示,共陽極 2 該程式就是利用這個一位的7段數碼管分時迴圈顯示0 9 a f共16個十六進製制數碼。3 在程式儲存器存放的 tab 是共陽極顯示編碼 應該是0 9 a f共16個顯示編碼 可惜少...

微控制器程式,微控制器的應用

寫錯了吧,0x10和0x01能一樣嗎?if adc contr 0x10 測試其第5位是否是1 相當於 if adc contr 0x10 0 while adc contr 0x10 測試其第5位 d4 是否是0 乙個是測試 1 乙個是測試 0x10 能一樣麼?微控制器的應用 微控制器的應用領域 ...

微控制器呼叫子程式,微控制器中如何呼叫寫好的子程式

ea 1,相當於enable all interrupt。表示允許中斷,不是呼叫timer0,而是允許timer0產生中斷,並執行timer0中斷函式中的內容。ea 1 應該是總中斷開 void time0 interrupt 1 是定時器中斷 時間到進入此函式 ea總中斷復允許,只有ea 1時,c...