定時中斷程序課程設計
1. 單片機C語言定時中斷程序設計,在線等
1,13位模式就是TOMD=0x00,不是TOMD=0x01(16位),
2,TR0=1 後,程序在往下走,定時器也在走,當中斷來了後,中斷,然後返回斷點,不一定是TR0=1,
你的程序有漏洞,應在中斷中,做一標志,如flag=1;
void Tim() interrupt 1
{
flag=1;
TR0=0;
sound=!sound; //將P3.7引腳輸出電平取反,形成方波
TH0=(x-C)/y; //可證明這是13位計數器TH0高8位的賦初值方法
TL0=(x-C)%y; //可證明這是13位計數器TL0低5位的賦初值方法
}
while(1) //無限循環
{
while(f[i]!=0xff) //只要沒有讀到結束標志就繼續播放
{
C=500000/f[i];
TH0=(x-C)/y; //可證明這是13位計數器TH0高8位的賦初值方法
TL0=(x-C)%y; //可證明這是13位計數器TL0低5位的賦初值方法
if(flag==1)
{
flag=0;
for(j=0;j<JP[i];j++) //控制節拍數
delay(); //延時1個節拍單位
i++; //播放下一個音符
TR0=1; //啟動定時器T0
}
}
}
}
2. 如何編寫定時器中斷程序。。。c語言的~~~
/********************************************************************
* 文件名 : 定時器的使用.c
* 描述 : 相對前面的軟體延時,定時器的延時更為精確。
定時時間可用光碟中的「51定時器計算.exe」計算。該軟體
位於單片機開發輔助工具文件夾中。
相應的視頻為「定時器的使用.exe」。
* 創建人 : 東流,2009年4月8日
* 版本號 : 2.0
***********************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar Count = 0;
uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code LED_W[8] = {0,4,2,6,1,5,3,7};
/********************************************************************
* 名稱 : Time0_Init()
* 功能 : 定時器的初始化,11.0592MZ晶振,50ms
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void Time0_Init()
{
TMOD = 0x01;
IE = 0x82;
TH0 = 0x4c;
TL0 = 0x00;
TR0 = 1;
}
/********************************************************************
* 名稱 : Time0_Int()
* 功能 : 定時器中斷,中斷中實現 Count 加一
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void Time0_Int() interrupt 1
{
TH0 = 0x4c;
TL0 = 0x00;
Count++; //長度加1
}
/********************************************************************
* 名稱 : Main()
* 功能 : 主函數
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void main()
{
uchar i = 0;
Time0_Init();
while(1)
{
P0 = table[i % 10]; //取 i 的個位
P2 = LED_W[0];
while(1)
{
if(Count == 20) //當Count為 20 時,i 自加一次,20 * 50MS = 1S
{
Count = 0;
i++;
break;
}
}
}
}
3. 51單片機定時器中斷程序
再次重新啟動。
4. 單片機定時中斷程序
//晶振頻率為24MHz,要求P1.0輸出周期為2ms的方波,P1.1輸出5ms的方波,占空比都為1:1.(高低電平一樣的)。
//使用T0和T1兩個定時計數器, 匯編或C都行。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void init();
sbit P10 = P1^0;
sbit P11 = P1^1;
//----------------------------
main()
{
init();
while(1) { }
}
//----------------------------
void init()
{
TMOD = 0x11;
TH0 = (65536 - 2000) / 256; //1ms@24MHz
TL0 = (65536 - 2000) % 256;
TR0 = 1;
TH1 = (65536 - 5000) / 256; //2.5ms@24MHz
TL1 = (65536 - 5000) % 256;
TR1 = 1;
ET0 = 1;
ET1 = 1;
EA = 1;
}
//----------------------------
void timer0() interrupt 1
{
TH0 = (65536 - 2000) / 256; //1ms@24MHz
TL0 = (65536 - 2000) % 256;
P10 = ~P10;
}
//----------------------------
void timer1() interrupt 3
{
TH1 = (65536 - 5000) / 256; //2.5ms@24MHz
TL1 = (65536 - 5000) % 256;
P11 = ~P11;
}
//================================================
5. 這個定時器中斷程序怎麼編寫
#include<reg51.h>
#defineucharunsignedchar
ucharsec,cnt;
sbitfmq=P1^0;
voidt0isr()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
cnt++;
if(cnt>=20){cnt=0;sec++;P0=~sec;if(sec>=60)sec=0;}
if((sec%10)==0)fmq=0;
elsefmq=1;
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
6. 單片機定時器中斷程序,C語言程序設計
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
uchar keyval;
uchar led1=0xfe,led2=0x55,led3=0x0f;
sbit key=P1^0;
void t0isr() interrupt 1
{
TH0=(65536-60000)/256;
TL0=(65536-60000)%256;
switch(keyval)
{
case 1:
P0=led1;
led1=_crol_(led1,1)
break;
case 2:
P0=led2;
led2=~;
break;
case 3:
P0=led3;
led3=~led3;
break;
default:break;
}
}
main()
{
TMOD=0x01;
TH0=(65536-60000)/256;
TL0=(65536-60000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(key==0)
{
while(key==0);
keyval++;
keyval%=4;
}
}
}
7. C語言定時中斷程序
蜂鳴器程序這樣做不好,不要用延時,而是將其放到中斷程序里。(一次中專斷就相當於一個延屬時)。
其實,鍵盤掃描最好的方式也是放到中斷里,這樣就去掉了很多不必要的延時。(網上有現成代碼)
延時子程序對於系統反應速度或者用戶的體驗,都會造成負面影響。
8. 用單片機的定時器及中斷設計一個60秒的定時器
;數碼管段選接P1口,位選接P2.0和P2.1,
;採用定時器T1定時10ms,60H為1s計數單元,計數100次為1s ORG 0000H ;程序從0地址開始回
LJMP MAIN ;跳到MAIN處執行
ORG 001BH ;定時器答T1
LJMP TIME1
ORG 0030H
MAIN:MOV TMOD,#01H ;設置T1工作在模式1
MOV TH1,#068H ;賦初值,定時10ms
MOV TL1,#0F0H
9. 課程設計用51單片機內部定時器做電子時鍾要求有清0調整時間功能
發了三個程序包給你,都是基於單片機數字鍾設計的程序,可帶按鍵調整時鍾。9.7的那個程序,裡面是用匯編語言編寫的延遲程序,時間精度相對高。但是稍微,Frbqhd