跳至正文

單片機課程設計(單片機課程設計心得)

單片機課程設計

單片機課程設計

#include#include #define unint unsigned int unint nt=0; void time()interrupt 1 using 1 { TH0=0x3c; TL0=0xb0; nt++; } void main() { unint led=0xfe; TMOD=0x01; TH0=0x3c; TL0=0xb0; EA=1; ET0=1; TR0=1; while(1) { if(nt%4==0) {P0=led;} eles P0=0; if(nt>40) {led=_crol_(led,1); if(led==0xef) {led=0xfe;} nt=0; }}

單片機課程設計,請大家幫忙~~~

單片機課程設計,請大家幫忙~~~

首先先判斷按鍵…用一個寄存器來放按鍵的值 舉個例子吧. 比如R3放按鍵數 當按下第一次時,CJNE R3,#1,AA AA程序就是你要執行了第一個L1閃的程序… 這個應該懂了吧

單片機課程設計,誰有報告?

單片機課程設計,誰有報告?

這是我們做的《微機控制技術》課程設計,里面包含了課程設計報告,課程設計報告非常的完整對各個階段的設計都有完整的說明,包含所有的源代碼。同時,附帶Protues仿真文件,在安裝了Protues的電腦上就可直接運行仿真文件。希望對相同課題設計的朋友有所幫助。下面是對內容的一些介紹:

=======================================

項目要求與擴展

========================================

1.1 項目要求:

1、 總共可以設置8位密碼,每位密碼值范圍1—8。

2、 用戶可以自行設定和修改密碼。

3、 按每個密碼鍵時都有聲音提示。

4、 若鍵入的8位開鎖密碼不完全正確,則報警5S。

5、 開鎖密碼連續錯3次要報警1分鐘,報警期中輸入密碼無效,以防盜賊多次試探密碼。

6、 鍵入的8位開鎖密碼完全正確才能開鎖,開始時要有1S的提示音。

7、 電磁鎖的電磁線圈每次充電5S,然后恢復初態。

8、 密碼鍵盤上只有8個密碼按鍵,鎖內有備用電池,只有內部上電復位時才能設置成終改密碼,因此,僅在門外按鍵是不能修改或設置密碼的。

9、密碼設置完畢后要有2S的提示音。

1.2用途與功能擴展:

我們在不改變原有項目要求的基礎上,從實用角度做了如下擴展:

1、將密碼范圍從0~8擴展到為 0~9;使密碼鎖的密碼設置更加符合人們的習慣。

2、解除對密碼的位數 (原要求長度為8位)的限定,把主動權交給用戶,由用戶根據需要自定義密碼位數,以便于實現任意位密碼的設置。

3、增加清除鍵用于清除輸入的誤碼:增加密碼輸入確認鍵用于對輸入結果進行確認。

=========================================

課程設計報告目錄

=========================================

目錄

引言 1

一、單片機概述 1

1.1 AT89S52的主要性能 1

1.2 AT89S52的功能特性描述 1

1.3 AT89S52的管腳排列 2

二、硬件設計 2

2.1 硬件設計思想 2

2.2 部分硬件方案論述 2

2.2.1 七段數碼管掃描顯示方式的方案比較 2

2.2.2 鍵盤連接方式方案比較 3

2.3 硬件電路圖 4

2.3.1硬件原理框圖 4

2.3.2 硬件protues仿真原理圖 5

2.4 硬件單元 5

2.4.1 鍵盤輸入單元: 5

2.4.2 顯示單元: 6

2.4.3報警電路模塊: 7

2.4.4晶振電路模塊: 7

2.4.5復位電路模塊: 7

2.4.6開鎖模塊 8

2.4.7單片機模塊 8

三、軟件設計 9

3.1 軟件基本思想: 9

3.1.1設置密碼模式: 9

3.1.2密碼驗證開鎖模式: 9

3.1.3密碼判決: 9

3.2 程序模塊介紹 9

3.3 程序簡述 10

3.4 內存單元的分配 10

3.4.1RAM存儲單元的分配方案 10

3.4.2 寄存器的分配方案 10

3.5 程序框圖 11

3.6 子程序清單列表 15

3.7 程序核心代碼(主函數代碼) 16

四、總結 20

4.1 基本成果: 20

4.2 技術特色與創新 20

4.2.1 安全 20

4.2.2 方便 20

4.3 應用拓展 20

4.4 與同類課題研究的比對和優勢 20

4.4.1 傳統的機械鎖: 21

4.4.2 指紋識別系統: 21

4.4.3 我們的特點及優勢: 21

五、參考文獻 21

六、收獲與感悟: 22

七、致謝 22

八、附錄 23

8.1電子密碼鎖用戶使用手冊 23

8.2 本組成員及分工情況 24

8.3 程序源代碼

==========================================

如果你需要可以到CSDN下載,資料可以分享。

1單片機課程設計 波形發生器的設計

單片機只能產生方波,還需要外圍器件,da0832加741;再高點的頻率就不行了;也可以波形發生芯片icl8038,它能同時產生正弦波,方波,三角波,采用ad采集電壓并記錄記錄,加12864液晶顯示;或者是波形發生電路加整形電路再加單片機采集顯示!三種方法樓主看哪個合適你吧.最后給你一個icl8038電路圖

單片機課程設計實例

redlightzhu bit p1.0

yellowlightzhu bit p1.1

greenlightzhu bit p1.2

redlightzhi bit p1.3

yellowlightzhi bit p1.4

greenlightzhi bit p1.5

shiw equ 78h

gew equ 79h

xh1 equ 30h

xh2 equ 31h

org 0000h

jmp main

org 0080h

main:

mov xh1,#255

mov xh2,#255

mov p1,#0ffh

mov P0,#0ffh

mov P2,#0ffh

mov dptr,#tab

green:

mov xh1,#255

mov xh2,#255

mov r4,#35

mov r3,#35

loopa:clr greenlightzhu

clr redlightzhi

loop1:lcall shuxian

djnz xh1,loop1

setb greenlightzhu

setb redlightzhi

loop2:lcall shuxian

djnz xh2,loop2

dec r3

dec r4

mov a,r4

cjne a,#5,loopa

greenlight:

mov xh1,#255

mov xh2,#255

mov r4,#5

mov r3,#5

loopb:clr greenlightzhu

clr yellowlightzhu

clr redlightzhi

loop11:lcall shuxian

djnz xh1,loop11

setb greenlightzhu

setb redlightzhi

setb yellowlightzhu

loop12:lcall shuxian

djnz xh2,loop12

dec r3

djnz r4,loopb

red1:

mov xh1,#255

mov xh2,#255

mov r4,#20

mov r3,#20

loopc:clr greenlightzhi

clr redlightzhu

loop21:call shuxian

djnz xh1,loop21

setb greenlightzhi

setb redlightzhu

loop22:call shuxian

djnz xh2,loop22

dec r4

dec r3

mov a,r3

cjne a,#5,loopc

red2:

mov xh1,#255

mov xh2,#255

mov r4,#5

mov r3,#5

loopd:clr greenlightzhi

clr yellowlightzhi

clr redlightzhu

loop31:call shuxian

djnz xh1,loop31

setb greenlightzhi

setb redlightzhu

setb yellowlightzhi

loop32:call shuxian

djnz xh2,loop32

dec r3

djnz r4,loopd

jmp green

shuxian:

mov a,r4

mov b,#10

div ab

mov shiw,a

mov gew,b

movc a,@a+dptr

mov shiw,a

mov a,gew

movc a,@a+dptr

mov gew,a

mov p0,#0ffh

mov p2,#0ffh

clr p2.3

mov p0,shiw

call delay

mov p0,#0ffh

mov p2,#0ffh

clr p2.4

mov p0,gew

call delay

mov a,r3

mov b,#10

div ab

mov shiw,a

mov gew,b

movc a,@a+dptr

mov shiw,a

mov a,gew

movc a,@a+dptr

mov gew,a

mov p0,#0ffH

mov p2,0ffh

clr p2.5

mov p0,shiw

call delay

mov p0,#0ffh

mov p2,#0ffh

clr p2.6

mov p0,gew

call delay

ret

delay:

mov r6,#30;延時1ms子程序

mov r7,#255

d1:djnz r6,d1

d2:djnz r7,d2

ret

tab:

DB 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h

end

簡單的單片機課程設計

S_SET BIT P3.2 ;數字鐘秒控制位

M_SET BIT P3.3 ;分鐘控制位

H_SET BIT P3.4 ;小時控制位

SECOND EQU 30H

MINUTE EQU 31H

HOUR EQU 32H

TCNT EQU 34H

ORG 0000H

SJMP START

ORG 000BH

LJMP INT_T0

START:MOV DPTR,#TABLE

MOV P1,#0FEH

MOV HOUR,#0 ;初始化

MOV MINUTE,#0

MOV SECOND,#0

MOV TCNT,#0

MOV TMOD,#01H

MOV TH0,#(65536-50000)/256 ;定時50毫秒

MOV TL0,#(65536-50000)/256

MOV IE,#82H

SETB TR0

;****************************;判斷是否有控制鍵按下,是哪一個鍵按下

A1: LCALL DISPLAY

JNB S_SET,S1

JNB M_SET,S2

JNB H_SET,S3

LJMP A1

S1: LCALL DELAY ;去抖動

JB S_SET,A1

INC SECOND ;秒值加1

MOV A,SECOND

CJNE A,#60,J0 ;判斷是否加到60秒

MOV SECOND,#0

LJMP K1

S2: LCALL DELAY

JB M_SET,A1

K1: INC MINUTE ;分鐘值加1

MOV A,MINUTE

CJNE A,#60,J1 ;判斷是否加到60分

MOV MINUTE,#0

LJMP K2

S3: LCALL DELAY

JB H_SET,A1

K2: INC HOUR ;小時值加1

MOV A,HOUR

CJNE A,#24,J2 ;判斷是否加到24小時

MOV HOUR,#0

MOV MINUTE,#0

MOV SECOND,#0

LJMP A1

;*********************;等待按鍵抬起

J0: JB S_SET,A1

LCALL DISPLAY

SJMP J0

J1: JB M_SET,A1

LCALL DISPLAY

SJMP J1

J2: JB H_SET,A1

LCALL DISPLAY

SJMP J2

;***********************************************

;定時器中斷服務程序,對秒,分鐘和小時的計數

INT_T0:MOV TH0,#(65536-50000)/256

MOV TL0,#(65536-50000)/256

INC TCNT

MOV A,TCNT

CJNE A,#20,RETUNE ;計時1秒

INC SECOND

MOV A,P1

RR A

MOV P1,A

MOV TCNT,#0

MOV A,SECOND

CJNE A,#60,RETUNE

INC MINUTE

MOV SECOND,#0

MOV A,MINUTE

CJNE A,#60,RETUNE

INC HOUR

MOV MINUTE,#0

MOV A,HOUR

CJNE A,#25,RETUNE

MOV HOUR,#0

MOV MINUTE,#0

MOV SECOND,#0

MOV TCNT,#0

RETUNE: RETI

;*********************;顯示控制子程序

DISPLAY: MOV A,SECOND ;顯示秒

MOV B,#10

DIV AB

CLR P2.1

MOVC A,@A+DPTR

MOV P0,A

LCALL DELAY

SETB P2.1

MOV A,B

CLR P2.0

MOVC A,@A+DPTR

MOV P0,A

LCALL DELAY

SETB P2.0

CLR P2.2

MOV P0,#40H

LCALL DELAY

SETB P2.2

MOV A,MINUTE ;顯示分鐘

MOV B,#10

DIV AB

CLR P2.4

MOVC A,@A+DPTR

MOV P0,A

LCALL DELAY

SETB P2.4

MOV A,B

CLR P2.3

MOVC A,@A+DPTR

MOV P0,A

LCALL DELAY

SETB P2.3

CLR P2.5

MOV P0,#40H

LCALL DELAY

SETB P2.5

MOV A,HOUR ;顯示小時

MOV B,#10

DIV AB

CLR P2.7

MOVC A,@A+DPTR

MOV P0,A

LCALL DELAY

SETB P2.7

MOV A,B

CLR P2.6

MOVC A,@A+DPTR

MOV P0,A

LCALL DELAY

SETB P2.6

RET

TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DELAY: MOV R6,#10

D1: MOV R7,#250

DJNZ R7,$

DJNZ R6,D1

RET

END

單片機課程設計:學校作息時間控制系統的設計!

C8051f040單片機,內部資源豐富,12864液晶顯示器,4X4鍵盤作為輸入模塊,主要是軟件.

單片機課程設計—–數字溫度計(要有原程序)

系統程序主要包括C程序主函數、DS18B20復位函數、DS18B20寫字節函數、DS18B20讀字節函數、溫度計算轉換函數、顯示函數等等。

以下是DS18B20溫度計C語言程序清單:

/*********************************************************************/

//

// DS18B20溫度計C程序

// 2005.2.28通過調試

/*********************************************************************/

//使用AT89C2051單片機,12MHZ晶振,用共陽LED數碼管

//P1口輸出段碼,P3口掃描

//#pragma src(d:\aa.asm)

#include “reg51.h”

#include “intrins.h” //_nop_();延時函數用

#define Disdata P1 //段碼輸出口

#define discan P3 //掃描口

#define uchar unsigned char

#define uint unsigned int

sbit DQ=P3^7; //溫度輸入口

sbit DIN=P1^7; //LED小數點控制

uint h;

//

//

//*******溫度小數部分用查表法**********//

uchar code ditab[16]=

{0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};

//

uchar code dis_7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};

/* 共陽LED段碼表 “0” “1” “2” “3” “4” “5” “6” “7” “8” “9” “不亮” “-” */

uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}; // 列掃描控制字

uchar data temp_data[2]={0x00,0x00}; // 讀出溫度暫放

uchar data display[5]={0x00,0x00,0x00,0x00,0x00};//顯示單元數據,共4個數據,一個運算暫存用

//

//

//

/***********11微秒延時函數**********/

//

void delay(uint t)

{

for(;t>0;t–);

}

//

/***********顯示掃描函數**********/

scan()

{

char k;

for(k=0;k<4;k++) //四位LED掃描控制

{

Disdata=dis_7[display[k]];

if(k==1){DIN=0;}

discan=scan_con[k];delay(90);discan=0xff;

}

}

//

//

/***********18B20復位函數**********/

ow_reset(void)

{

char presence=1;

while(presence)

{

while(presence)

{

DQ=1;_nop_();_nop_();

DQ=0; //

delay(50); // 550us

DQ=1; //

delay(6); // 66us

presence=DQ; // presence=0繼續下一步

}

delay(45); //延時500us

presence = ~DQ;

}

DQ=1;

}

//

//

/**********18B20寫命令函數*********/

//向 1-WIRE 總線上寫一個字節

void write_byte(uchar val)

{

uchar i;

for (i=8; i>0; i–) //

{

DQ=1;_nop_();_nop_();

DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();//5us

DQ = val&0x01; //最低位移出

delay(6); //66us

val=val/2; //右移一位

}

DQ = 1;

delay(1);

}

//

/*********18B20讀1個字節函數********/

//從總線上讀取一個字節

uchar read_byte(void)

{

uchar i;

uchar value = 0;

for (i=8;i>0;i–)

{

DQ=1;_nop_();_nop_();

value>>=1;

DQ = 0; //

_nop_();_nop_();_nop_();_nop_(); //4us

DQ = 1;_nop_();_nop_();_nop_();_nop_(); //4us

if(DQ)value|=0x80;

delay(6); //66us

}

DQ=1;

return(value);

}

//

/***********讀出溫度函數**********/

//

read_temp()

{

ow_reset(); //總線復位

write_byte(0xCC); // 發Skip ROM命令

write_byte(0xBE); // 發讀命令

temp_data[0]=read_byte(); //溫度低8位

temp_data[1]=read_byte(); //溫度高8位

ow_reset();

write_byte(0xCC); // Skip ROM

write_byte(0x44); // 發轉換命令

}

//

/***********溫度數據處理函數**********/

work_temp()

{

uchar n=0; //

if(temp_data[1]>127)

{temp_data[1]=(256-temp_data[1]);temp_data[0]=(256-temp_data[0]);n=1;}//負溫度求補碼

display[4]=temp_data[0]&0x0f;display[0]=ditab[display[4]];

display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);//

display[3]=display[4]/100;

display[1]=display[4]%100;

display[2]=display[1]/10;

display[1]=display[1]%10;

if(!display[3]){display[3]=0x0A;if(!display[2]){display[2]=0x0A;}}//最高位為0時都不顯示

if(n){display[3]=0x0B;}//負溫度時最高位顯示”-“

}

//

//

/**************主函數****************/

main()

{

Disdata=0xff; //初始化端口

discan=0xff;

for(h=0;h<4;h++){display[h]=8;}//開機顯示8888

ow_reset(); // 開機先轉換一次

write_byte(0xCC); // Skip ROM

write_byte(0x44); // 發轉換命令

for(h=0;h<500;h++)

{scan();} //開機顯示”8888″2秒

while(1)

{

read_temp(); //讀出18B20溫度數據

work_temp(); //處理溫度數據

for(h=0;h<500;h++)

{scan();} //顯示溫度值2秒

}

}

//

//*********************結束**************************//

單片機課程設計 單片機溫度的檢測與顯示的設計

用18b20做很簡單啊。

溫度的子程序給你,,你重定義一下接口,主程序已經調用出溫度了,你送到顯示就行了。。

/* 延時t毫秒 */

void delay(uint t)

{

uint i;

while(t–)

{

/* 對于11.0592M時鐘,約延時1ms */

for (i=0;i<125;i++)

{}

}

}

/* 產生復位脈沖初始化DS18B20 */

void TxReset(void)

{

uint i;

DQ = 0;

/* 拉低約900us */

i = 100;

while (i>0) i–;

DQ = 1; // 產生上升沿

i = 4;

while (i>0) i–;

}

/* 等待應答脈沖 */

void RxWait(void)

{

uint i;

while(DQ);

while(~DQ); // 檢測到應答脈沖

i = 4;

while (i>0) i–;

}

/* 讀取數據的一位,滿足讀時隙要求 */

bit RdBit(void)

{

uint i;

bit b;

DQ = 0;

i++;

DQ = 1;

i++;i++; // 延時15us以上,讀時隙下降沿后15us,DS18B20輸出數據才有效

b = DQ;

i = 8;

while(i>0) i–;

return (b);

}

/* 讀取數據的一個字節 */

uchar RdByte(void)

{

uchar i,j,b;

b = 0;

for (i=1;i<=8;i++)

{

j = RdBit();

b = (j<<7)|(b>>1);

}

return(b);

}

/* 寫數據的一個字節,滿足寫1和寫0的時隙要求 */

void WrByte(uchar b)

{

uint i;

uchar j;

bit btmp;

for(j=1;j<=8;j++)

{

btmp = b&0x01;

b = b>>1; // 取下一位(由低位向高位)

if (btmp)

{

/* 寫1 */

DQ = 0;

i++;i++; // 延時,使得15us以內拉高

DQ = 1;

i = 8;

while(i>0) i–; // 整個寫1時隙不低于60us

}

else

{

/* 寫0 */

DQ = 0;

i = 8;

while(i>0) i–; // 保持低在60us到120us之間

DQ = 1;

i++;

i++;

}

}

}

/* 啟動溫度轉換 */

void convert(void)

{

TxReset(); // 產生復位脈沖,初始化DS18B20

RxWait(); // 等待DS18B20給出應答脈沖

delay(1); // 延時

WrByte(0xcc); // skip rom 命令

WrByte(0x44); // convert T 命令

}

/* 讀取溫度值 */

void RdTemp(void)

{

TxReset(); // 產生復位脈沖,初始化DS18B20

RxWait(); // 等待DS18B20給出應答脈沖

delay(1); // 延時

WrByte(0xcc); // skip rom 命令

WrByte(0xbe); // read scratchpad 命令

tplsb = RdByte(); // 溫度值低位字節(其中低4位為二進制的“小數”部分)

tpmsb = RdByte(); // 高位值高位字節(其中高5位為符號位)

}

void main(void)

{

do

{

delay(1); // 延時1ms

convert(); // 啟動溫度轉換,需要750ms

delay(1000); // 延時1s

RdTemp(); // 讀取溫度

}

while(1);

}

單片機課程設計電子時鐘程序

#include <at89x51.h> //頭文件包含

#define uchar unsigned char //宏定義

#define uint unsigned int

#define ON 0 //定義0為打開

#define OFF 1 //定義1為關閉

#define LEDBus P1 //定義p1口為數碼管段碼口

sbit MIAO =P1^2; //秒點

sbit HOU_S=P3^0; //時十位位選

sbit HOU_G=P3^1; //時個位位選

sbit MIN_S=P3^2; //分十位位選

sbit MIN_G=P3^3; //分個位位選

sbit H_KEY=P3^4; //時調整鍵

sbit M_KEY=P3^5; //分調整鍵

bit SHAN; //閃爍標志位

uchar second,minute,hour; //定義秒、分、時寄存器

uchar code LEDTab[]={0x14,0xd7,0x4c, //數碼管段碼表0–9

0x45,0x87,0x25,0x24,0x57,0x04,0x05};

void delay(uchar t); //延時函數

void init(); //初始化函數

void display(); //顯示函數

void min_tiao(); //分調整函數

void hou_tiao(); //時調整函數

/***************************************

函 數 名:main

功 能:主函數

說 明:

入口參數:無

返 回 值:無

****************************************/

void main()

{

init(); //調用初始化函數

while(1) //主程序循環

{

if(!H_KEY) hou_tiao(); //如果時調整鍵按下(為0),調用時調整函數

if(!M_KEY) min_tiao(); //如果分調整鍵按下(為0),調用分調整函數

display(); //調用顯示函數

}

}

/***************************************

函 數 名:init

功 能:初始化函數

說 明:初始化定時器及中斷

入口參數:無

返 回 值:無

***************************************/

void init()

{

TMOD=1;TH0=0X3C;TL0=0XB0; //定時器0模式1,50毫秒

ET0=1;TR0=1;EA=1; //開定時器0中斷、啟動定時器0、開總中斷

}

/***************************************

函 數 名:display

功 能:顯示函數

說 明:

入口參數:無

返 回 值:無

***************************************/

void display()

{

LEDBus=LEDTab[minute%10]; //分個位送數碼管顯示

MIAO=SHAN; //秒點閃爍

MIN_G=ON; //打開分個位位選

delay(1); //顯示1毫秒

MIN_G=OFF; //關閉分個位位選

LEDBus=LEDTab[minute/10]; //分十位送數碼管顯示

MIAO=SHAN; //秒點閃爍

MIN_S=ON; //打開分十位位選

delay(1); //顯示1毫秒

MIN_S=OFF; //關閉分十位位選

LEDBus=LEDTab[hour%10]; //時個位送數碼管顯示

HOU_G=ON; //打開時個位位選

delay(1); //顯示1毫秒

HOU_G=OFF; //關閉時個位位選

if(hour/10) //如果時十位為0,不顯示十位數字

{

LEDBus=LEDTab[hour/10]; //時十位送數碼管顯示

HOU_S=ON; //打開時十位位選

delay(1); //顯示1毫秒

HOU_S=OFF; //關閉時十位位選

}

}

/***************************************

函 數 名:min_tiao

功 能:分調整

說 明:

入口參數:無

返 回 值:無

***************************************/

void min_tiao()

{

while(!M_KEY) display(); //等待分調整鍵松開

second=0;minute++; //秒清零、分加1

if(minute==60) minute=0; //如果分等于60,分變0

}

/***************************************

函 數 名:hou_tiao

功 能:時調整

說 明:

入口參數:無

返 回 值:無

***************************************/

void hou_tiao()

{

while(!H_KEY) display(); //等待時調整鍵松開

second=0;hour++; //秒清零,時加1

if(hour==24) hour=0; //如果時等于24,時變0

}

/***************************************

函 數 名:delay

功 能:延時函數

說 明:

入口參數:t:延時時間長短

返 回 值:無

***************************************/

void delay(uchar t)

{

uchar i; //定義變量

for(;t>0;t–) //如果t大于0,t減1(外層循環)

for(i=124;i>0;i–); //i等于124,如果i大于0,i減1

}

/***************************************

函 數 名:timer0

功 能:定時器0中斷函數

說 明:

入口參數:無

返 回 值:無

***************************************/

void timer0() interrupt 1 //定時器0(中斷1)

{

uchar tim1,tim2; //定義臨時變量

TL0=TL0+0XB0;TH0=0X3C; //重裝定時器初值

tim1++; //每中斷一次tim1加1

if(tim1==10) //中斷10(0.5秒)

{

SHAN=!SHAN; //閃爍標志取反

tim1=0;tim2++; //tim1清零,tim2加1

if(tim2==2) //到了1秒

{

tim2=0;second++; //tim2清零,秒加1

if(second==60) //如果秒到60

{

second=0;minute++; //秒變0,分加1

if(minute==60) //如果分到60

{

minute=0;hour++; //分變0,時加1

if(hour==24) hour=0; //如果時到24,時變0

}

}

}

}

}

/***************************************

program end 程序結束

主站蜘蛛池模板: 4444亚洲国产成人精品| 亚洲喷奶水中文字幕电影| 一本久道久久综合多人| 老鸭窝视频在线观看| 日本乱偷人妻中文字幕在线| 国产最爽的乱淫视频国语对| 亚洲av无码一区二区三区性色| 亚洲最大激情中文字幕| 欧美三级视频在线| 国产日产精品_国产精品毛片| 亚洲久热无码av中文字幕| 色偷偷人人澡久久天天| 欧美11一12周岁a在线观看| 国产日韩中文字幕| 久久男人的天堂色偷偷| 青青草国产免费久久久下载| 日本在线观看中文| 啄木乌欧美一区二区三区| 三级中文字幕永久在线视频| 精品一区二区三区免费毛片爱 | 香蕉视频一区二区三区| 欧美性xxxx禁忌| 国产欧美精品区一区二区三区| 九九久久国产精品| 调教女m视频免费区视频在线观看| 日本a∨在线播放高清| 又大又硬又爽免费视频| a级毛片免费观看在线播放| 欧美综合区自拍亚洲综合图区| 国产精品国产免费无码专区不卡 | 久久99中文字幕伊人| 美女扒开尿口给男人爽免费视频| 小小影视日本动漫观看免费| 伊人久久大香线蕉综合爱婷婷| 91精品免费国产高清在线| 欧美亚洲欧美日韩中文二区| 国产悠悠视频在线播放| 中文字幕一精品亚洲无线一区| 男女一边摸一边做爽爽| 国产精品无码一区二区三级| 久久无码无码久久综合综合|