流水燈&數碼管&定時器中斷
根據郭天祥老師定時器流水燈課件作業。
利用動態掃描和定時器1在數碼管上顯示出從765432開始以1/10秒的速度往下遞減直至765398並保持顯示此數,與此同時利用定時器0以500MS速度進行流水燈從上至下移動,當數碼管上數減到停止時,實驗板上流水燈也停止然後全部開始閃爍,3秒後(用T0定時)流水燈全部關閉、數碼管上顯示出“HELLO”。到此保持住。
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uint temp=0xfe,num=432 ,time;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table_du[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code table_we[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
void delay(uint z);
void disply();
void init();
void disply_hello();
void main()
{
int mark=0;
init();
while(1 )
{
if(num>398)
{
disply();
P1=temp;
}
else if(num==398&&mark!=3)
{
mark++;
while(time<20)
{
disply();
P1=0x0;
}
while(time>=20 &&time<=40)
{
wela=1;
P0=0xff;
wela=0;
dula=1;
P0=0xff;
dula=0;
P1=0xff;
if(time==40)
time=0;
}
}
else if(mark==3)
{
while(1)
disply_hello();
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
if(num>398)
if(time==4||time==8||time==12||time==16||time==20)
{
if(time==20)
{
temp=_crol_(temp,1);
time=0;
}
num--;
if(num==398)
time=0;
}
}
void init()
{
num=432;
TMOD=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void disply()
{
uint a,b,c;
a=num/100;
b=num/10%10;
c=num%10;
P0=0x0;
wela=1;
P0=table_we[0];
wela=0;
P0=0x0;
dula=1;
P0=table_du[7];
dula=0;
delay(1);
P0=0x0;
wela=1;
P0=table_we[1];
wela=0;
P0=0x0;
dula=1;
P0=table_du[6];
dula=0;
delay(1);
P0=0x0;
wela=1;
P0=table_we[2];
wela=0;
P0=0x0;
dula=1;
P0=table_du[5];
dula=0;
delay(1);
P0=0x0;
wela=1;
P0=table_we[3];
wela=0;
P0=0x0;
dula=1;
P0=table_du[a];
dula=0;
delay(1);
P0=0x0;
wela=1;
P0=table_we[4];
wela=0;
P0=0x0;
dula=1;
P0=table_du[b];
dula=0;
delay(1);
P0=0x0;
wela=1;
P0=table_we[5];
wela=0;
P0=0x0;
dula=1;
P0=table_du[c];
dula=0;
delay(1);
}
void disply_hello()
{
P0=0x0;
wela=1;
P0=table_we[0];
wela=0;
P0=0x0;
dula=1;
P0=0x76;
dula=0;
delay(1);
P0=0x0;
wela=1;
P0=table_we[1];
wela=0;
P0=0x0;
dula=1;
P0=0x79;
dula=0;
delay(1);
P0=0x0;
wela=1;
P0=table_we[2];
wela=0;
P0=0x0;
dula=1;
P0=0x38;
dula=0;
delay(1);
P0=0x0;
wela=1;
P0=table_we[3];
wela=0;
P0=0x0;
dula=1;
P0=0x38;
dula=0;
delay(1);
P0=0x0;
wela=1;
P0=table_we[4];
wela=0;
P0=0x0;
dula=1;
P0=0x3f;
dula=0;
delay(1);
P0=0x0;
wela=1;
P0=table_we[5];
wela=0;
P0=0x0;
dula=1;
P0=0x0;
dula=0;
delay(1);
}
相關推薦
流水燈&數碼管&定時器中斷
根據郭天祥老師定時器流水燈課件作業。 利用動態掃描和定時器1在數碼管上顯示出從765432開始以1/10秒的速度往下遞減直至765398並保持顯示此數,與此同時利用定時器0以500MS速度進行流水燈從上至下移動,當數碼管上數減到停止時,實驗板上流水燈也停止然後
C51--點亮LED燈(for迴圈、while迴圈、定時器中斷迴圈)
第一步:開啟keil4,建立工程,at89c52。 1.點亮第一個LED燈 #include<reg52.h> sbit led=P2^0; void main() { led=0;//低電平亮 } 2.利用延時來使LED 1秒閃爍,500ms變
51微控制器定時器中斷控制燈1S亮的程式
#include <AT89X51.H>unsigned char i=0,j=0; void main(){ TMOD=0X01; TH0=0X4c; TL0=0X00; TR0=1;ET0=1;EA=1;P0_3=1; while(1) {};} t
Stm32定時器中斷使LED燈閃爍
知識點: Stm32共有11個定時器: 1.兩個高階定時器:TIM1、TIM8-------------------------APB2 2.四個通用定時器:TIM2~TIM5-------------------------APB1 3.兩個基本定時器:TIM6、TIM7
stm32-定時器中斷
cmd open 兩個 typedef clock 數據手冊 濾波 重裝 fin 由於現在是在學用庫函數操作,我的目標是知道用到的每個函數的作用,需要的時候可以加以更改使用,所以關鍵是要怎麽知道stm32各函數的作用 雖然從名字上也能知道個大概,但是細節還是要查stm3
TI CC2530 學習筆記-7-NewBit-CC2530-Interrupt-定時器中斷
TI CC2530 學習筆記-目錄 TI CC2530 學習筆記-7-NewBit-CC2530-Interrupt-定時器中斷 設定CC2530定時器4每1ms中斷一次,在中斷裡對溢位進行計數,當計數達到1000次(1秒)時小燈狀態改變。 配置定時器和LED
51微控制器使用定時器中斷模擬PWM控制埠電壓
最近應實驗室需求寫一篇51微控制器產生PWM的文章供參考. 微控制器晶片STC89C52,晶振12MHz,編譯環境Keil5. 分析:若使微控制器埠為高電平, 則微控制器輸出電壓為恆值5V. 反之低電平輸出電壓為0V. 但是我們如果在週期為T的時間內
[STM32F103]定時器中斷
l 使能定時器時鐘。 RCC_APB1PeriphClockCmd(); l 初始化定時器,配置ARR,PSC。 TIM_TimeBaseInit(); l 開啟定時器中斷,配置NVIC。 void TIM_ITConfig(); NVIC_Init(
微控制器MSP430 - Timer_A 定時器中斷程式
一、利用定時器定時功能,實現定時器單個溢位中斷,實現 P3.0 方波輸出 #include "cc430x613x.h" void main() { WDTCTL = WDTPW + WDTHOLD; // 停止看門狗定時器 P3DIR |=
stm32f103定時器中斷
stm32為我們提供了8個定時器,分為:通用是定時器(TIM2~TIM5),高階定時器(TIM1和TIM8),基本定時器(TIM6和TIM7)。 至於三者之間的區別可以參考以下部落格:https://blog.csdn.net/dukai392/article/details/72058041
ZYNQ-7000私有定時器中斷
轉自:https://blog.csdn.net/RZJMPB/article/details/50812579 本片文章將在ZYNQ的純PS裡實現私有定時器中斷。每個一秒中斷一次,在中斷函式裡計數加1,通過串列埠列印輸出。 *本文所使用的開發板是Miz702(相容zedb
C6678定時器中斷學習180614
第一次寫部落格,希望能夠在兩年內記錄一下自己的學習歷程。目前剛開始接觸DSP,所以在學習DSP上會對多寫點,如果有不對的地方 希望大家能夠不吝賜教! 話不多說,接觸的6678板子,所以先從6678的中斷部分開始寫起,之前寫了一個GPIO的,但是樓主發現腦子短路了,因為沒有外部中斷GPIO
51微控制器定時器中斷程式
程式執行開始,A燈先亮5秒,然後滅了到B燈亮5秒,B再滅再到C燈亮5秒,C滅,程式結束,不再執行。這程式該怎麼寫?用定時器精確定時……晶振11.092MHZ。 #include "REG52.H" /* * */ sbit LED_A = P1^0; sbit
STM32F107的通用定時器中斷實驗總結
1. STM32F107的通用定時器是指: TIM2、TIM3、TIM4、TIM5、 STM32F107的高階定時器是指: TIM1、TIM8 STM32F107的基本定時器是指: TIM6、TIM7 2. STM32F107的通用定時器(TIM2、T
[HAL庫學習之路]7.定時器中斷
記錄自己的STM32的HAL庫的學習之路,不定期更新… 一、Pinout 二、Clock Configuration 三、Configuration 定時器溢位時
微控制器的定時器中斷以及使用的一般步驟(51為例)
51微控制器共有兩個16位可程式設計的定時器/計數器,即定時器T0和定時器T1。它們既有定時功能又有計數功能,通過設定一些相關的特殊功能暫存器就可以選擇啟用哪一個功能。定時器系統是微控制器內部一個獨立硬體部分,與CPU和晶振之間通過內部某些控制線連線並相互作用,
STM32CubeMX學習教程之四:定時器中斷
完整原始碼下載:https://github.com/simonliu009/STM32CubeMX-TIM1-Interrupt軟體:STM32CubeMX V4.25.0 System Workbench V2.4韌體庫版本:STM32Cube FW_F1 V1.6.1
Arduino—定時器中斷的簡單實現
實驗中使用到的Arduino開發板型號為Mega 2560。Mega 2560的工作電壓為5V,其標明的推薦電壓為7~12V,在開發專案的時候,一般要用到變壓器。其供電型別有3.3V和5V兩種。這裡進行中斷實驗時,沒這麼麻煩,只需將這塊板子和電腦用USB線連線起來即可。首先,
用連結串列+函式指標+定時器中斷實現的一個軟體定時器(試用於所有微控制器)
因為需要移植nrf51822的程式到普通微控制器上,於是分析了協議棧裡的軟體定時器,用連結串列+函式指標+定時器中斷的方法實現了軟體定時器的功能。 下面介紹程式碼和使用方法 1、函式指標和連結串列初始化 typedef void (*app_timer_timeout_
STM32之定時器中斷控制LED閃爍
上篇部落格我們是用延時函式實現了LED的閃爍,今天我們使用STM32的定時器來使LED閃爍。 關於32的定時器的種類,今天我在這先不做過多的說明,有時間我會再另寫一篇部落格來專門介紹32的定時器。今天我們使用32的定時器3來產生中斷,以實現LED的閃爍。 今