最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

第6章-中斷與數(shù)碼管動(dòng)態(tài)顯示

2023-08-22 23:36 作者:feifeiluan2  | 我要投稿

之前都是開胃菜,這回開始上重點(diǎn)了,難度也開始上來了



課后習(xí)題4

#include <reg52.h>


typedef unsigned char uchar;

typedef unsigned int uint;

typedef unsigned long ulong;


sbit ADDR0 = P1 ^ 0;

sbit ADDR1 = P1 ^ 1;

sbit ADDR2 = P1 ^ 2;

sbit ADDR3 = P1 ^ 3;

sbit ENLED = P1 ^ 4;


uchar code LedChar[] = {

? ? 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,

? ? 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};

uchar LedBuff[6] = {0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0};


bit flag1s = 0;

uint cnt = 0;


void main(void)

{

? ? ? ? ulong sec = 980;


? ? ? ? ENLED = 0; // 138總開關(guān)打開

? ? ? ? ADDR3 = 1; // 選138高8路


? ? ? ? TMOD = 0x01;

? ? ? ? TH0 = 0xFC;

? ? ? ? TL0 = 0x66;

? ? ? ? TR0 = 1;

? ? ? ? EA = ET0 = 1;


? ? ? ? while (1)

? ? ? ? {

? ? ? ? ? ? ? ? if (flag1s == 1)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? flag1s = 0;

? ? ? ? ? ? ? ? ? ? ? ? sec++;

? ? ? ? ? ? ? ? ? ? ? ? LedBuff[0] = LedChar[sec % 10];

? ? ? ? ? ? ? ? ? ? ? ? LedBuff[1] = LedChar[sec / 10 % 10];

? ? ? ? ? ? ? ? ? ? ? ? LedBuff[2] = LedChar[sec / 100 % 10];

? ? ? ? ? ? ? ? ? ? ? ? LedBuff[3] = LedChar[sec / 1000 % 10];

? ? ? ? ? ? ? ? ? ? ? ? LedBuff[4] = LedChar[sec / 10000 % 10];

? ? ? ? ? ? ? ? ? ? ? ? LedBuff[5] = LedChar[sec / 100000 % 10];

? ? ? ? ? ? ? ? }

? ? ? ? }

}


void Timer0_ISR(void) interrupt 1

{

? ? ? ? static char i = 5; ? // 從高位開始顯示

? ? ? ? static bit show = 0; // 1=顯示;0=不顯示,默認(rèn)從高位開始不顯示


? ? ? ? TH0 = 0xFC; // 重裝初值

? ? ? ? TL0 = 0x66;


? ? ? ? if (++cnt >= 200) // 判斷1s到了,為了加快測(cè)試把1000改成了200

? ? ? ? {

? ? ? ? ? ? ? ? cnt = 0;

? ? ? ? ? ? ? ? flag1s = 1;

? ? ? ? }


? ? ? ? P0 = 0xFF; // 消影,,,,,后面不顯示的部分,也利用了這一次的賦值

? ? ? ? switch (i)

? ? ? ? {

? ? ? ? case 0:

? ? ? ? ? ? ? ? ADDR2 = 0;

? ? ? ? ? ? ? ? ADDR1 = 0;

? ? ? ? ? ? ? ? ADDR0 = 0;

? ? ? ? ? ? ? ? i = 5;

? ? ? ? ? ? ? ? P0 = LedBuff[0]; // 永遠(yuǎn)會(huì)顯示

? ? ? ? ? ? ? ? show = 0;

? ? ? ? ? ? ? ? break;

? ? ? ? case 1:

? ? ? ? ? ? ? ? ADDR2 = 0;

? ? ? ? ? ? ? ? ADDR1 = 0;

? ? ? ? ? ? ? ? ADDR0 = 1;

? ? ? ? ? ? ? ? i--;

? ? ? ? ? ? ? ? if (show || (LedBuff[1] != LedChar[0]))

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? P0 = LedBuff[1];

? ? ? ? ? ? ? ? ? ? ? ? show = 1;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? break;

? ? ? ? case 2:

? ? ? ? ? ? ? ? ADDR2 = 0;

? ? ? ? ? ? ? ? ADDR1 = 1;

? ? ? ? ? ? ? ? ADDR0 = 0;

? ? ? ? ? ? ? ? i--;

? ? ? ? ? ? ? ? if (show || (LedBuff[2] != LedChar[0]))

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? P0 = LedBuff[2];

? ? ? ? ? ? ? ? ? ? ? ? show = 1;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? break;

? ? ? ? case 3:

? ? ? ? ? ? ? ? ADDR2 = 0;

? ? ? ? ? ? ? ? ADDR1 = 1;

? ? ? ? ? ? ? ? ADDR0 = 1;

? ? ? ? ? ? ? ? i--;

? ? ? ? ? ? ? ? if (show || (LedBuff[3] != LedChar[0]))

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? P0 = LedBuff[3];

? ? ? ? ? ? ? ? ? ? ? ? show = 1;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? break;

? ? ? ? case 4:

? ? ? ? ? ? ? ? ADDR2 = 1;

? ? ? ? ? ? ? ? ADDR1 = 0;

? ? ? ? ? ? ? ? ADDR0 = 0;

? ? ? ? ? ? ? ? i--;

? ? ? ? ? ? ? ? if (show || (LedBuff[4] != LedChar[0]))

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? P0 = LedBuff[4];

? ? ? ? ? ? ? ? ? ? ? ? show = 1;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? break;

? ? ? ? case 5:

? ? ? ? ? ? ? ? ADDR2 = 1;

? ? ? ? ? ? ? ? ADDR1 = 0;

? ? ? ? ? ? ? ? ADDR0 = 1;

? ? ? ? ? ? ? ? i--;

? ? ? ? ? ? ? ? if (LedBuff[5] != LedChar[0])

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? P0 = LedBuff[5];

? ? ? ? ? ? ? ? ? ? ? ? show = 1;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? break;

? ? ? ? }

}


課后習(xí)題5

#include <reg52.h>

typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;

sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;

uchar code LedChar[] = {
??? 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
??? 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};
uchar LedBuff[6] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90};

bit flag1s = 0;
uint cnt = 0;

void main(void)
{
?? ?ulong sec = 999999;

?? ?ENLED = 0; // 138總開關(guān)打開
?? ?ADDR3 = 1; // 選138高8路

?? ?TMOD = 0x10;
?? ?TH1 = 0xFC;
?? ?TL1 = 0x66;
?? ?TR1 = 1;
?? ?EA = ET1 = 1;

?? ?while (1)
?? ?{
?? ??? ?if (flag1s == 1)
?? ??? ?{
?? ??? ??? ?flag1s = 0;
?? ??? ??? ?sec--;
?? ??? ??? ?LedBuff[0] = LedChar[sec % 10];
?? ??? ??? ?LedBuff[1] = LedChar[sec / 10 % 10];
?? ??? ??? ?LedBuff[2] = LedChar[sec / 100 % 10];
?? ??? ??? ?LedBuff[3] = LedChar[sec / 1000 % 10];
?? ??? ??? ?LedBuff[4] = LedChar[sec / 10000 % 10];
?? ??? ??? ?LedBuff[5] = LedChar[sec / 100000 % 10];
?? ??? ?}
?? ?}
}

void Timer1_ISR(void) interrupt 3
{
?? ?static char i = 0;

?? ?TH1 = 0xFC; // 重裝初值
?? ?TL1 = 0x66;

?? ?if (++cnt >= 200) // 判斷1s到了;為了加快測(cè)試把1000改成了200
?? ?{
?? ??? ?cnt = 0;
?? ??? ?flag1s = 1;
?? ?}

?? ?P0 = 0xFF; // 消影
?? ?switch (i)
?? ?{
?? ?case 0:
?? ??? ?ADDR2 = 0;
?? ??? ?ADDR1 = 0;
?? ??? ?ADDR0 = 0;
?? ??? ?i++;
?? ??? ?P0 = LedBuff[0];
?? ??? ?break;
?? ?case 1:
?? ??? ?ADDR2 = 0;
?? ??? ?ADDR1 = 0;
?? ??? ?ADDR0 = 1;
?? ??? ?i++;
?? ??? ?P0 = LedBuff[1];
?? ??? ?break;
?? ?case 2:
?? ??? ?ADDR2 = 0;
?? ??? ?ADDR1 = 1;
?? ??? ?ADDR0 = 0;
?? ??? ?i++;
?? ??? ?P0 = LedBuff[2];
?? ??? ?break;
?? ?case 3:
?? ??? ?ADDR2 = 0;
?? ??? ?ADDR1 = 1;
?? ??? ?ADDR0 = 1;
?? ??? ?i++;
?? ??? ?P0 = LedBuff[3];
?? ??? ?break;
?? ?case 4:
?? ??? ?ADDR2 = 1;
?? ??? ?ADDR1 = 0;
?? ??? ?ADDR0 = 0;
?? ??? ?i++;
?? ??? ?P0 = LedBuff[4];
?? ??? ?break;
?? ?case 5:
?? ??? ?ADDR2 = 1;
?? ??? ?ADDR1 = 0;
?? ??? ?ADDR0 = 1;
?? ??? ?i = 0;
?? ??? ?P0 = LedBuff[5];
?? ??? ?break;
?? ?}
}

第6章-中斷與數(shù)碼管動(dòng)態(tài)顯示的評(píng)論 (共 條)

使用qq登录你需要登录后才可以评论。
临桂县| 万安县| 鹤岗市| 镶黄旗| 揭阳市| 佳木斯市| 武夷山市| 内黄县| 阿合奇县| 临桂县| 凤庆县| 大方县| 南乐县| 墨竹工卡县| 朝阳区| 杭锦后旗| 彭阳县| 兰考县| 松溪县| 山阴县| 扶绥县| 武陟县| 闽清县| 天祝| 台州市| 波密县| 鲁山县| 冀州市| 西乌| 广昌县| 丰台区| 湖北省| 双城市| 泰州市| 临夏市| 客服| 鞍山市| 泌阳县| 上蔡县| 南宫市| 晋宁县|