社会工程学

黑客技术入门,网站入侵,顶级黑客,黑客联盟,攻击网站

关于xss穿aj的信息

本文导读目录:

关于政治请老师解答,这句话体现了我国什么经济制度

体现了--以公有制经济为主体,多种所有制经济共同发展的经济体制

望采纳~~谢谢

如何正确防御xss攻击

XSS攻击通常是指黑客通过"HTML注入"篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。

一、HttpOnly防止劫取Cookie

HttpOnly最早由微软提出,至今已经成为一个标准。浏览器将禁止页面的Javascript访问带有HttpOnly属性的Cookie。目前主流浏览器都支持,HttpOnly解决是XSS后的Cookie支持攻击。

我们来看下百度有没有使用。

未登录时的Cookie信息

可以看到,所有Cookie都没有设置HttpOnly,现在我登录下

发现在个叫BDUSS的Cookie设置了HttpOnly。可以猜测此Cookie用于认证。

下面我用PHP来实现下:

?php

header("Set-Cookie: cookie1=test1;");

header("Set-Cookie: cookie2=test2;httponly",false);

setcookie('cookie3','test3',NULL,NULL,NULL,NULL,false);

setcookie('cookie4','test4',NULL,NULL,NULL,NULL,true);

?

script

alert(document.cookie);

/script

js只能读到没有HttpOnly标识的Cookie

二、输入检查

输入检查一般是检查用户输入的数据中是否包含一些特殊字符,如、、'、"等,如果发现存在特殊字符,则将这些字符过滤或者编码。

例如网站注册经常用户名只允许字母和数字的组合,或者邮箱电话,我们会在前端用js进行检查,但在服务器端代码必须再次检查一次,因为客户端的检查很容易绕过。

网上有许多开源的“XSS Filter”的实现,但是它们应该选择性的使用,因为它们对特殊字符的过滤可能并非数据的本意。比如一款php的lib_filter类:

$filter = new lib_filter();

echo $filter-go('1+11');

它输出的是1,这大大歪曲了数据的语义,因此什么情况应该对哪些字符进行过滤应该适情况而定。

三、输出检查

大多人都知道输入需要做检查,但却忽略了输出检查。

1、在HTML标签中输出

如代码:

?php

$a = "scriptalert(1);/script";

$b = "img src=# onerror=alert(2) /";

?

div?=$b?/div

a href="#"?=$a?/a

这样客户端受到xss攻击,解决方法就是对变量使用htmlEncode,php中的函数是htmlentities

?php

$a = "scriptalert(1);/script";

$b = "img src=# onerror=alert(2) /";

?

div?=htmlentities($b)?/div

a href="#"?=htmlentities($a)?/a

2、在HTML属性中输出

div id="div" name ="$var"/div

这种情况防御也是使用htmlEncode

在owasp-php中实现:

$immune_htmlattr = array(',', '.', '-', '_');

$this-htmlEntityCodec-encode($this-immune_htmlattr, "\"script123123;/script\"");

3、在script标签中输出

如代码:

?php

$c = "1;alert(3)";

?

script type="text/javascript"

var c = ?=$c?;

/script

这样xss又生效了。首先js变量输出一定要在引号内,但是如果我$c = "\"abc;alert(123);//",你会发现放引号中都没用,自带的函数都不能很好的满足。这时只能使用一个更加严格的JavascriptEncode函数来保证安全——除数字、字母外的所有字符,都使用十六进制"\xHH"的方式进行编码。这里我采用开源的owasp-php方法来实现

$immune = array("");

echo $this-javascriptCodec-encode($immune, "\"abc;alert(123);//");

最后输出\x22abc\x3Balert\x28123\x29\x3B\x2F\x2F

4、在事件中输出

a href="#" onclick="funcA('$var')" test/a

可能攻击方法

a href="#" onclick="funcA('');alter(/xss/;//')"test/a

这个其实就是写在script中,所以跟3防御相同

5、在css中输出

在owasp-php中实现:

$immune = array("");

$this-cssCodec-encode($immune, 'background:expression(window.x?0:(alert(/XSS/),window.x=1));');

6、在地址中输出

先确保变量是否是"http"开头,然后再使用js的encodeURI或encodeURIComponent方法。

在owasp-php中实现:

$instance = ESAPI::getEncoder();

$instance-encodeForURL(‘url’);

四、处理富文体

就像我写这篇博客,我几乎可以随意输入任意字符,插入图片,插入代码,还可以设置样式。这个时要做的就是设置好白名单,严格控制标签。能自定义 css件麻烦事,因此最好使用成熟的开源框架来检查。php可以使用htmlpurify

五、防御DOM Based XSS

DOM Based XSS是从javascript中输出数据到HTML页面里。

script

var x = "$var";

document.write("a href='"+x+"'test/a");

/script

按照三中输出检查用到的防御方法,在x赋值时进行编码,但是当document.write输出数据到HTML时,浏览器重新渲染了页面,会将x进行解码,因此这么一来,相当于没有编码,而产生xss。

防御方法:首先,还是应该做输出防御编码的,但后面如果是输出到事件或脚本,则要再做一次javascriptEncode编码,如果是输出到HTML内容或属性,则要做一次HTMLEncode。

会触发DOM Based XSS的地方有很多:

document.write()、document.writeln()、xxx.innerHTML=、xxx.outerHTML=、innerHTML.replace、document.attachEvent()、window.attachEvent()、document.location.replace()、document.location.assign()

急求基于单片机电脑时钟程序和原理图!

HOUR EQU 030H ;小时缓存

MINUTE EQU 031H ;分钟缓存

SECOND EQU 032H ;秒缓存

DHOUR EQU 040H ;定时小时缓存

DMINUTE EQU 041H ;定时分钟缓存

AJBZ EQU 042H ;按键次数标志

DSBZ EQU 022H ;定时开关标志

COUNT1 EQU 033H ;总计数到4000:拆分成40*100 总计数1

COUNT2 EQU 034H

SPL EQU 020H ;闪烁判断的依据

SET_BTN EQU 021H ;按键标志位

ORG 0000H

AJMP MAIN

ORG 001BH ;定时计数器T1中断入口地址

AJMP IT_1

ORG 040H

MAIN:MOV SPL,#00H ;闪烁标志清零

MOV DPTR,#TABLE ;码段首地址

MOV HOUR,#00H ;小时缓存清零

MOV MINUTE,#00H ;分缓存清零

MOV DHOUR,#00H ;定时小时缓存清零

MOV DMINUTE,#00H ;定时分缓存清零

MOV SECOND,#00H ;秒缓存清零

MOV AJBZ,#00H ;按键次数缓存清零

MOV COUNT1,#00H ;总计数1清零

MOV COUNT2,#00H ;总计数2清零

MOV DHOUR,#00H ;定时小时地址清零

MOV DSBZ,#00H ;定时开关标志清零

CLR P3.0 ;定时时间1控制位清零

CLR P3.1 ;定时时间2控制位清零

MOV TMOD,#20H ;设置计数方式

MOV TH1,#06H ;定时计数器T1高八位初值

MOV TL1,#06H ;定时计数器低八位初值

MOV IE,#10001000B ;设置允许中断,并且打开两个定时器

SETB TR1

LOOP:JNB P0.0,JUST_TIME ;P0.0为零跳转(调时操作)

JB SET_BTN.0,JUST_TIME ;标志位为1跳转

JNB P0.1, SUBB_TIME ;减操作

JB SET_BTN.1,SUBB_TIME

JNB P0.2, ADD_TIME ;加操作

JB SET_BTN.2,ADD_TIME

JB P0.6,TIME

CLR P3.0

JB P0.7,TIME

CLR P3.1

TIME1:JB SPL.3,DSXS ;转定时小时显示

JB SPL.4,DSXS ;转定时分钟显示

JB SPL.5,DSXS ;转定时开关显示

ACALL HOUR_SHOW ;小时显示

ACALL MINUTE_SHOW ;分钟显示

ACALL SECOND_SHOW ;秒显示

FHLOOP:AJMP LOOP

DSXS:ACALL DHOUR_SHOW ;定时小时显示

ACALL DMINUTE_SHOW ;定时分钟显示

ACALL DSECOND_SHOW ;定时开关显示

AJMP LOOP

JUST_TIME:

LJMP JUST_TIME1

SUBB_TIME:

JB SET_BTN.1,WAIT_BTN2_UP

ACALL DELAY2;

JB P0.1, TIME

SETB SET_BTN.1

JB SPL.1,SUBB_HOUR

JB SPL.2,SUBB_MIN

JB SPL.3,DSUBB_HOUR

JB SPL.4,DSUBB_MIN

JB SPL.5,GDS

AJMP TIME

ADD_TIME:

LJMP ADDTIME

SUBB_MIN:

MOV R1,MINUTE

CJNE R1,#00H,SUBB_MIN_OPT

MOV MINUTE,#3BH

AJMP TIME

SUBB_MIN_OPT:

DEC MINUTE

AJMP TIME

DSUBB_MIN:

MOV R1,DMINUTE

CJNE R1,#00H,DSUBB_MIN_OPT

MOV DMINUTE,#3BH

AJMP TIME

DSUBB_MIN_OPT:

DEC DMINUTE

AJMP TIME

SUBB_HOUR:

MOV R1,HOUR

CJNE R1,#00H,SUBB_HOUR_OPT

MOV HOUR,#17H

AJMP TIME

SUBB_HOUR_OPT:

DEC HOUR

AJMP TIME

DSUBB_HOUR:

MOV R1,DHOUR

CJNE R1,#00H,DSUBB_HOUR_OPT

MOV DHOUR,#17H

AJMP TIME

DSUBB_HOUR_OPT:

DEC DHOUR

AJMP TIME

WAIT_BTN2_UP:

JNB P0.1,TIME

CLR SET_BTN.1

AJMP TIME

TIME:LJMP TIME1

GDS:CLR DSBZ.0

LJMP TIME

ADDTIME:JB SET_BTN.2,WAIT_BTN3_UP

ACALL DELAY2

JB P0.2, TIME

SETB SET_BTN.2

JB SPL.1,ADD_HOUR

JB SPL.2,ADD_MIN

JB SPL.3,DADD_HOUR

JB SPL.4,DADD_MIN

JB SPL.5,KDS

LJMP TIME

ADD_MIN:MOV R1,MINUTE

CJNE R1,#3BH,ADD_MIN_OPT

MOV MINUTE,#00H

LJMP TIME

ADD_MIN_OPT:

INC MINUTE

LJMP TIME

DADD_MIN:

MOV R1,DMINUTE

CJNE R1,#3BH,DADD_MIN_OPT

MOV DMINUTE,#00H

LJMP TIME

DADD_MIN_OPT:

INC DMINUTE

LJMP TIME

ADD_HOUR:

MOV R1,HOUR

CJNE R1,#17H,ADD_HOUR_OPT

MOV HOUR,#00H

LJMP TIME

ADD_HOUR_OPT:

INC HOUR

LJMP TIME

DADD_HOUR:

MOV R1,DHOUR

CJNE R1,#17H,DADD_HOUR_OPT

MOV DHOUR,#00H

LJMP TIME

DADD_HOUR_OPT:

INC DHOUR

LJMP TIME

WAIT_BTN3_UP:

JNB P0.2,TIME

CLR SET_BTN.2

LJMP TIME

KDS:SETB DSBZ.0

LJMP TIME

JUST_TIME1:

JB SET_BTN.0,WAIT_UP

ACALL DELAY2

JB P0.0, TIME

SETB SET_BTN.0

MOV R1,AJBZ

CJNE R1,#05H,INC1

MOV AJBZ,#00H

MOV SPL,#00H

LJMP TIME

INC1:INC AJBZ

MOV R1,AJBZ

CJNE R1,#01H,JSFZ ;计时分钟

SETB SPL.1

LJMP TIME

JSFZ:CJNE R1,#02H,DSX ;定时小时

CLR SPL.1

SETB SPL.2

LJMP TIME

DSX:CJNE R1,#03H,DSFZ ;定时分钟

CLR SPL.2

SETB SPL.3

LJMP TIME

DSFZ:CJNE R1,#04H,DSKG ;定时开关

CLR SPL.3

SETB SPL.4

DSKG:CJNE R1,#05H,LJUMP_TIME ;返回显示状态

CLR SPL.4

SETB SPL.5

LJUMP_TIME:

LJMP TIME

WAIT_UP:JNB P0.0,LJUMP_TIME ;等待按键松开,松开后清零按键标志

CLR SET_BTN.0

LJMP TIME

WAIT2_DL1:

ACALL DELAY1

ACALL DELAY1

RET

HOUR_SHOW:

JNB SPL.1, HOUR_SHOW_HRER

JB SPL.0, HOUR_SHOW_HRER

ACALL WAIT2_DL1

RET

HOUR_SHOW_HRER: ;小时显示

SETB P2.6

SETB P2.7

CLR A

MOV A,HOUR

MOV B,#0AH

DIV AB ;小时十位在A中,个位在B中

MOVC A,@A+DPTR

MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据

MOV P1,A

CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)

;延时

ACALL DELAY1

SETB P2.7 ;熄灭小时

MOV P1,#00H

MOV A,B ;B中存放的小时各位数据放入A

MOVC A,@A+DPTR

MOV P1,A

CLR P2.6 ;显示小时个位数据

;延时

ACALL DELAY1

SETB P2.6

MOV P1,#00H

RET

MINUTE_SHOW:

JNB SPL.2, MINUTE_SHOW_HERE

JB SPL.0, MINUTE_SHOW_HERE

ACALL WAIT2_DL1

RET

MINUTE_SHOW_HERE:

SETB P2.5

SETB P2.4

CLR A

MOV A,MINUTE

MOV B,#0AH

DIV AB

MOVC A,@A+DPTR

MOV P1,#00H

MOV P1,A

CLR P2.5

;延时

ACALL DELAY1

SETB P2.5

MOV P1,#00H

MOV A,B

MOVC A,@A+DPTR

MOV P1,A

CLR P2.4

;延时

ACALL DELAY1

SETB P2.4

MOV P1,#00H

RET

SECOND_SHOW:

SETB P2.3

SETB P2.2

CLR A

MOV A,SECOND

MOV B,#0AH

DIV AB

MOVC A,@A+DPTR

MOV P1,#00H

MOV P1,A

CLR P2.3

;延时

ACALL DELAY1

SETB P2.3

MOV P1,#00H

MOV A,B

MOVC A,@A+DPTR

MOV P1,A

CLR P2.2

;延时

ACALL DELAY1

SETB P2.2

JNB DSBZ.0,DYFH ;定时比较开始

JB P3.0,DYFH

MOV A,HOUR

CJNE A,DHOUR,DYFH

MOV A,MINUTE

CJNE A,DMINUTE,DYFH

SETB P3.0

DYFH:RET

DHOUR_SHOW: ;调整定时时间显示

JNB SPL.3,XSS

JB SPL.0, XSS

ACALL WAIT2_DL1

RET

XSS:SETB P2.6

SETB P2.7

CLR A

MOV A,DHOUR

MOV B,#0AH

DIV AB ;小时十位在A中,个位在B中

MOVC A,@A+DPTR

MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据

MOV P1,A

CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)

;延时

ACALL DELAY1

SETB P2.7 ;熄灭小时

MOV P1,#00H

MOV A,B ;B中存放的小时个位数据放入A

MOVC A,@A+DPTR

MOV P1,A

CLR P2.6 ;显示小时个位数据

;延时

ACALL DELAY1

SETB P2.6

MOV P1,#00H

RET

;定时分钟显示

DMINUTE_SHOW:

JNB SPL.4,XSF

JB SPL.0, XSF

ACALL WAIT2_DL1

RET

XSF:SETB P2.5

SETB P2.4

CLR A

MOV A,DMINUTE

MOV B,#0AH

DIV AB

MOVC A,@A+DPTR

MOV P1,#00H

MOV P1,A

CLR P2.5

;延时

ACALL DELAY1

SETB P2.5

MOV P1,#00H

MOV A,B

MOVC A,@A+DPTR

MOV P1,A

CLR P2.4

;延时

ACALL DELAY1

SETB P2.4

MOV P1,#00H

RET

;定时开关显示

DSECOND_SHOW:

JNB SPL.5,XSM ;显示秒(定时开关)

JB SPL.0,XSM

ACALL WAIT2_DL1

RET

XSM:SETB P2.3

SETB P2.2

CLR A

MOV A,#00H

MOVC A,@A+DPTR

MOV P1,A

CLR P2.3

;延时

ACALL DELAY1

SETB P2.3

MOV P1,#00H

JNB DSBZ.0,GBZ ;关标志

MOV A,#0BH

AJMP XS

GBZ:MOV A,#0AH

XS:MOVC A,@A+DPTR

MOV P1,A

CLR P2.2

;延时

ACALL DELAY1

SETB P2.2

MOV P1,#00H

RET

;短延时 ;显示短延时

DELAY1:MOV R6,#03H

DL1:MOV R7,08H

DL2:DJNZ R7,DL2

DJNZ R6,DL1

RET

;按键延时

DELAY2:MOV R6,#0AH

DL21:MOV R7,0AH

DL22:DJNZ R7,DL22

DJNZ R6,DL21

RET

IT_1:PUSH ACC

PUSH B

PUSH PSW

INC COUNT1

MOV A,COUNT1

CJNE A,#28H,RETI_LABLE

INC COUNT2

MOV COUNT1,#00H

MOV A,COUNT2

MOV B,#32H

DIV AB

MOV A,B

JNZ C2_OPT

CPL P3.7 ;秒的闪烁

CPL SPL.0 ;调整闪烁

C2_OPT:MOV A,COUNT2

CJNE A,#64H,RETI_LABLE

INC 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_LABLE

MOV HOUR,#00H

RETI_LABLE:

POP PSW

POP B

POP ACC

RETI

;TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H ;共阴码表

TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,8EH,0C8H ;共阳码表

; 0 1 2 3 4 5 6 7 8 9 F N

END

这个带定时的可以驱动继电器控制你的电器定时开关,原理图很简单啊

XS码是多大?

xs是加小号,计算尺码如下解释: 对于xs是多大号的问题我们可以用常规的思路来理解,既然s是小号,那么xs是加小号准不会错了,就是说xs比s还要小,通常女士的衣服会出现这样的标码,因为有些衣服的面料比较特殊,比如针织衫和梭织衫就常有xs的标码,还有xxs的标码呢,裤子几乎不会出现此标码。按照国际惯例xs的针织衫适合160的人穿。 在网购的时候,如果对衣服的尺码比太了解,你可以参照身边的同款同面料的衣服做对比,这样就不会出错,如果你所购买的衣服标有xs的号数,那么xs是多大号也可以估算出来,通常网上会按照从小到大的顺序排列,那么你根据它排的位置也可以估算出xs的大小来...

小马宝莉各cp的名称,如:虹林檎

云宝黛西(云宝)+阿杰(苹果嘉儿)=虹林檎,黛西的头发是彩虹色的,林檎指的是苹果杰克

云宝黛西(云宝)+萍琪派(碧琪)=恶作剧组,因为她们经常在一起恶作剧

云宝黛西(云宝)+萍卡美娜=杯糕组,来自黑暗六同人

云宝黛西(云宝)+小蝶(柔柔)=天马组,因为两个都是天马

云宝黛西(云宝)+暮光闪闪(紫悦)=图书组,因为云宝黛西经常去暮光那里借无畏天马,而暮光闪闪也爱看书

瑞瑞(珍奇)+阿杰(苹果嘉儿)=稀有苹果,瑞瑞=稀有,阿杰=苹果,这个我就不解释了

萍琪派(碧琪)+暮光闪闪(紫悦)=暮光派,这个很容易理解

萍琪派(碧琪)+小蝶(柔柔)=粉毛组,因为头发都是粉红色的

萍琪派(碧琪)+萍卡美娜=双重人格组、病态组,这个可以去了解一下黑暗六同人中的萍卡美娜和萍琪派的关系就可以理解

另外你好像不知道六主角的缩写,我来科普一下:

云宝黛西(云宝)=RD

暮光闪闪(紫悦)=TS

萍琪派(碧琪)=PP

苹果杰克(苹果嘉儿)=AJ

小蝶(柔柔)=FS

瑞瑞(珍奇)=RR

及下列配角

崔克西(特里克西)=TX

塞拉斯蒂亚公主(宇宙公主)=PC

落日余晖(余晖烁烁)=SS

我知道的就这么多了,求采纳QWQ打字累

89s52给写个能定时7小时的程序

HOUR EQU 030H ;小时缓存

MINUTE EQU 031H ;分钟缓存

SECOND EQU 032H ;秒缓存

DHOUR EQU 040H ;定时小时缓存

DMINUTE EQU 041H ;定时分钟缓存

AJBZ EQU 042H ;按键次数标志

DSBZ EQU 022H ;定时开关标志

COUNT1 EQU 033H ;总计数到4000:拆分成40*100 总计数1

COUNT2 EQU 034H

SPL EQU 020H ;闪烁判断的依据

SET_BTN EQU 021H ;按键标志位

ORG 0000H

AJMP MAIN

ORG 001BH ;定时计数器T1中断入口地址

AJMP IT_1

ORG 040H

MAIN:MOV SPL,#00H ;闪烁标志清零

MOV DPTR,#TABLE ;码段首地址

MOV HOUR,#00H ;小时缓存清零

MOV MINUTE,#00H ;分缓存清零

MOV DHOUR,#00H ;定时小时缓存清零

MOV DMINUTE,#00H ;定时分缓存清零

MOV SECOND,#00H ;秒缓存清零

MOV AJBZ,#00H ;按键次数缓存清零

MOV COUNT1,#00H ;总计数1清零

MOV COUNT2,#00H ;总计数2清零

MOV DHOUR,#00H ;定时小时地址清零

MOV DSBZ,#00H ;定时开关标志清零

CLR P3.0

MOV TMOD,#20H ;设置计数方式

MOV TH1,#06H ;定时计数器T1高八位初值

MOV TL1,#06H ;定时计数器低八位初值

MOV IE,#10001000B ;设置允许中断,并且打开两个定时器

SETB TR1

LOOP:JNB P0.0,JUST_TIME ;P0.0为零跳转(调时操作)

JB SET_BTN.0,JUST_TIME ;标志位为1跳转

JNB P0.1, SUBB_TIME ;减操作

JB SET_BTN.1,SUBB_TIME

JNB P0.2, ADD_TIME ;加操作

JB SET_BTN.2,ADD_TIME

JB P0.7,TIME

CLR P3.0

TIME1:JB SPL.3,DSXS ;转定时小时显示

JB SPL.4,DSXS ;转定时分钟显示

JB SPL.5,DSXS ;转定时开关显示

ACALL HOUR_SHOW ;小时显示

ACALL MINUTE_SHOW ;分钟显示

ACALL SECOND_SHOW ;秒显示

FHLOOP:AJMP LOOP

DSXS:ACALL DHOUR_SHOW ;定时小时显示

ACALL DMINUTE_SHOW ;定时分钟显示

ACALL DSECOND_SHOW ;定时开关显示

AJMP LOOP

JUST_TIME:

LJMP JUST_TIME1

SUBB_TIME:

JB SET_BTN.1,WAIT_BTN2_UP

ACALL DELAY2;

JB P0.1, TIME

SETB SET_BTN.1

JB SPL.1,SUBB_HOUR

JB SPL.2,SUBB_MIN

JB SPL.3,DSUBB_HOUR

JB SPL.4,DSUBB_MIN

JB SPL.5,GDS

AJMP TIME

ADD_TIME:

LJMP ADDTIME

SUBB_MIN:

MOV R1,MINUTE

CJNE R1,#00H,SUBB_MIN_OPT

MOV MINUTE,#3BH

AJMP TIME

SUBB_MIN_OPT:

DEC MINUTE

AJMP TIME

DSUBB_MIN:

MOV R1,DMINUTE

CJNE R1,#00H,DSUBB_MIN_OPT

MOV DMINUTE,#3BH

AJMP TIME

DSUBB_MIN_OPT:

DEC DMINUTE

AJMP TIME

SUBB_HOUR:

MOV R1,HOUR

CJNE R1,#00H,SUBB_HOUR_OPT

MOV HOUR,#17H

AJMP TIME

SUBB_HOUR_OPT:

DEC HOUR

AJMP TIME

DSUBB_HOUR:

MOV R1,DHOUR

CJNE R1,#00H,DSUBB_HOUR_OPT

MOV DHOUR,#17H

AJMP TIME

DSUBB_HOUR_OPT:

DEC DHOUR

AJMP TIME

WAIT_BTN2_UP:

JNB P0.1,TIME

CLR SET_BTN.1

AJMP TIME

TIME:LJMP TIME1

GDS:CLR DSBZ.0

LJMP TIME

ADDTIME:JB SET_BTN.2,WAIT_BTN3_UP

ACALL DELAY2

JB P0.2, TIME

SETB SET_BTN.2

JB SPL.1,ADD_HOUR

JB SPL.2,ADD_MIN

JB SPL.3,DADD_HOUR

JB SPL.4,DADD_MIN

JB SPL.5,KDS

LJMP TIME

ADD_MIN:MOV R1,MINUTE

CJNE R1,#3BH,ADD_MIN_OPT

MOV MINUTE,#00H

LJMP TIME

ADD_MIN_OPT:

INC MINUTE

LJMP TIME

DADD_MIN:

MOV R1,DMINUTE

CJNE R1,#3BH,DADD_MIN_OPT

MOV DMINUTE,#00H

LJMP TIME

DADD_MIN_OPT:

INC DMINUTE

LJMP TIME

ADD_HOUR:

MOV R1,HOUR

CJNE R1,#17H,ADD_HOUR_OPT

MOV HOUR,#00H

LJMP TIME

ADD_HOUR_OPT:

INC HOUR

LJMP TIME

DADD_HOUR:

MOV R1,DHOUR

CJNE R1,#17H,DADD_HOUR_OPT

MOV DHOUR,#00H

LJMP TIME

DADD_HOUR_OPT:

INC DHOUR

LJMP TIME

WAIT_BTN3_UP:

JNB P0.2,TIME

CLR SET_BTN.2

LJMP TIME

KDS:SETB DSBZ.0

LJMP TIME

JUST_TIME1:

JB SET_BTN.0,WAIT_UP

ACALL DELAY2

JB P0.0, TIME

SETB SET_BTN.0

MOV R1,AJBZ

CJNE R1,#05H,INC1

MOV AJBZ,#00H

MOV SPL,#00H

LJMP TIME

INC1:INC AJBZ

MOV R1,AJBZ

CJNE R1,#01H,JSFZ ;计时分钟

SETB SPL.1

LJMP TIME

JSFZ:CJNE R1,#02H,DSX ;定时小时

CLR SPL.1

SETB SPL.2

LJMP TIME

DSX:CJNE R1,#03H,DSFZ ;定时分钟

CLR SPL.2

SETB SPL.3

LJMP TIME

DSFZ:CJNE R1,#04H,DSKG ;定时开关

CLR SPL.3

SETB SPL.4

DSKG:CJNE R1,#05H,LJUMP_TIME ;返回显示状态

CLR SPL.4

SETB SPL.5

LJUMP_TIME:

LJMP TIME

WAIT_UP:JNB P0.0,LJUMP_TIME ;等待按键松开,松开后清零按键标志

CLR SET_BTN.0

LJMP TIME

WAIT2_DL1:

ACALL DELAY1

ACALL DELAY1

RET

HOUR_SHOW:

JNB SPL.1, HOUR_SHOW_HRER

JB SPL.0, HOUR_SHOW_HRER

ACALL WAIT2_DL1

RET

HOUR_SHOW_HRER: ;小时显示

SETB P2.6

SETB P2.7

CLR A

MOV A,HOUR

MOV B,#0AH

DIV AB ;小时十位在A中,个位在B中

MOVC A,@A+DPTR

MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据

MOV P1,A

CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)

;延时

ACALL DELAY1

SETB P2.7 ;熄灭小时

MOV P1,#00H

MOV A,B ;B中存放的小时各位数据放入A

MOVC A,@A+DPTR

MOV P1,A

CLR P2.6 ;显示小时个位数据

;延时

ACALL DELAY1

SETB P2.6

MOV P1,#00H

RET

MINUTE_SHOW:

JNB SPL.2, MINUTE_SHOW_HERE

JB SPL.0, MINUTE_SHOW_HERE

ACALL WAIT2_DL1

RET

MINUTE_SHOW_HERE:

SETB P2.5

SETB P2.4

CLR A

MOV A,MINUTE

MOV B,#0AH

DIV AB

MOVC A,@A+DPTR

MOV P1,#00H

MOV P1,A

CLR P2.5

;延时

ACALL DELAY1

SETB P2.5

MOV P1,#00H

MOV A,B

MOVC A,@A+DPTR

MOV P1,A

CLR P2.4

;延时

ACALL DELAY1

SETB P2.4

MOV P1,#00H

RET

SECOND_SHOW:

SETB P2.3

SETB P2.2

CLR A

MOV A,SECOND

MOV B,#0AH

DIV AB

MOVC A,@A+DPTR

MOV P1,#00H

MOV P1,A

CLR P2.3

;延时

ACALL DELAY1

SETB P2.3

MOV P1,#00H

MOV A,B

MOVC A,@A+DPTR

MOV P1,A

CLR P2.2

;延时

ACALL DELAY1

SETB P2.2

JNB DSBZ.0,DYFH ;定时比较开始

JB P3.0,DYFH

MOV A,HOUR

CJNE A,DHOUR,DYFH

MOV A,MINUTE

CJNE A,DMINUTE,DYFH

SETB P3.0

DYFH:RET

DHOUR_SHOW: ;调整定时时间显示

JNB SPL.3,XSS

JB SPL.0, XSS

ACALL WAIT2_DL1

RET

XSS:SETB P2.6

SETB P2.7

CLR A

MOV A,DHOUR

MOV B,#0AH

DIV AB ;小时十位在A中,个位在B中

MOVC A,@A+DPTR

MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据

MOV P1,A

CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)

;延时

ACALL DELAY1

SETB P2.7 ;熄灭小时

MOV P1,#00H

MOV A,B ;B中存放的小时个位数据放入A

MOVC A,@A+DPTR

MOV P1,A

CLR P2.6 ;显示小时个位数据

;延时

ACALL DELAY1

SETB P2.6

MOV P1,#00H

RET

;定时分钟显示

DMINUTE_SHOW:

JNB SPL.4,XSF

JB SPL.0, XSF

ACALL WAIT2_DL1

RET

XSF:SETB P2.5

SETB P2.4

CLR A

MOV A,DMINUTE

MOV B,#0AH

DIV AB

MOVC A,@A+DPTR

MOV P1,#00H

MOV P1,A

CLR P2.5

;延时

ACALL DELAY1

SETB P2.5

MOV P1,#00H

MOV A,B

MOVC A,@A+DPTR

MOV P1,A

CLR P2.4

;延时

ACALL DELAY1

SETB P2.4

MOV P1,#00H

RET

;定时开关显示

DSECOND_SHOW:

JNB SPL.5,XSM ;显示秒(定时开关)

JB SPL.0,XSM

ACALL WAIT2_DL1

RET

XSM:SETB P2.3

SETB P2.2

CLR A

MOV A,#00H

MOVC A,@A+DPTR

MOV P1,A

CLR P2.3

;延时

ACALL DELAY1

SETB P2.3

MOV P1,#00H

JNB DSBZ.0,GBZ ;关标志

MOV A,#0BH

AJMP XS

GBZ:MOV A,#0AH

XS:MOVC A,@A+DPTR

MOV P1,A

CLR P2.2

;延时

ACALL DELAY1

SETB P2.2

MOV P1,#00H

RET

;短延时 ;显示短延时

DELAY1:MOV R6,#03H

DL1:MOV R7,08H

DL2:DJNZ R7,DL2

DJNZ R6,DL1

RET

;按键延时

DELAY2:MOV R6,#0AH

DL21:MOV R7,0AH

DL22:DJNZ R7,DL22

DJNZ R6,DL21

RET

IT_1:PUSH ACC

PUSH B

PUSH PSW

INC COUNT1

MOV A,COUNT1

CJNE A,#28H,RETI_LABLE

INC COUNT2

MOV COUNT1,#00H

MOV A,COUNT2

MOV B,#32H

DIV AB

MOV A,B

JNZ C2_OPT

CPL P3.7 ;秒的闪烁

CPL SPL.0 ;调整闪烁

C2_OPT:MOV A,COUNT2

CJNE A,#64H,RETI_LABLE

INC 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_LABLE

MOV HOUR,#00H

RETI_LABLE:

POP PSW

POP B

POP ACC

RETI

;TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H ;共阴码表

TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,8EH,0C8H ;共阳码表

; 0 1 2 3 4 5 6 7 8 9 F N

END

这个可以设定任意时间

单片机问题

HOUR EQU 030H ;小时缓存

MINUTE EQU 031H ;分钟缓存

SECOND EQU 032H ;秒缓存

DHOUR EQU 040H ;定时小时缓存

DMINUTE EQU 041H ;定时分钟缓存

AJBZ EQU 042H ;按键次数标志

DSBZ EQU 022H ;定时开关标志

COUNT1 EQU 033H ;总计数到4000:拆分成40*100 总计数1

COUNT2 EQU 034H

SPL EQU 020H ;闪烁判断的依据

SET_BTN EQU 021H ;按键标志位

ORG 0000H

AJMP MAIN

ORG 001BH ;定时计数器T1中断入口地址

AJMP IT_1

ORG 040H

MAIN:MOV SPL,#00H ;闪烁标志清零

MOV DPTR,#TABLE ;码段首地址

MOV HOUR,#00H ;小时缓存清零

MOV MINUTE,#00H ;分缓存清零

MOV DHOUR,#00H ;定时小时缓存清零

MOV DMINUTE,#00H ;定时分缓存清零

MOV SECOND,#00H ;秒缓存清零

MOV AJBZ,#00H ;按键次数缓存清零

MOV COUNT1,#00H ;总计数1清零

MOV COUNT2,#00H ;总计数2清零

MOV DHOUR,#00H ;定时小时地址清零

MOV DSBZ,#00H ;定时开关标志清零

CLR P3.0 ;定时时间到控制位清零

MOV TMOD,#20H ;设置计数方式

MOV TH1,#06H ;定时计数器T1高八位初值

MOV TL1,#06H ;定时计数器低八位初值

MOV IE,#10001000B ;设置允许中断,并且打开两个定时器

SETB TR1

LOOP:JNB P0.0,JUST_TIME ;P0.0为零跳转(调时操作)

JB SET_BTN.0,JUST_TIME ;标志位为1跳转

JNB P0.1, SUBB_TIME ;减操作

JB SET_BTN.1,SUBB_TIME

JNB P0.2, ADD_TIME ;加操作

JB SET_BTN.2,ADD_TIME

JB P0.7,TIME

CLR P3.0

TIME1:JB SPL.3,DSXS ;转定时小时显示

JB SPL.4,DSXS ;转定时分钟显示

JB SPL.5,DSXS ;转定时开关显示

ACALL HOUR_SHOW ;小时显示

ACALL MINUTE_SHOW ;分钟显示

ACALL SECOND_SHOW ;秒显示

FHLOOP:AJMP LOOP

DSXS:ACALL DHOUR_SHOW ;定时小时显示

ACALL DMINUTE_SHOW ;定时分钟显示

ACALL DSECOND_SHOW ;定时开关显示

AJMP LOOP

JUST_TIME:

LJMP JUST_TIME1

SUBB_TIME:

JB SET_BTN.1,WAIT_BTN2_UP

ACALL DELAY2;

JB P0.1, TIME

SETB SET_BTN.1

JB SPL.1,SUBB_HOUR

JB SPL.2,SUBB_MIN

JB SPL.3,DSUBB_HOUR

JB SPL.4,DSUBB_MIN

JB SPL.5,GDS

AJMP TIME

ADD_TIME:

LJMP ADDTIME

SUBB_MIN:

MOV R1,MINUTE

CJNE R1,#00H,SUBB_MIN_OPT

MOV MINUTE,#3BH

AJMP TIME

SUBB_MIN_OPT:

DEC MINUTE

AJMP TIME

DSUBB_MIN:

MOV R1,DMINUTE

CJNE R1,#00H,DSUBB_MIN_OPT

MOV DMINUTE,#3BH

AJMP TIME

DSUBB_MIN_OPT:

DEC DMINUTE

AJMP TIME

SUBB_HOUR:

MOV R1,HOUR

CJNE R1,#00H,SUBB_HOUR_OPT

MOV HOUR,#17H

AJMP TIME

SUBB_HOUR_OPT:

DEC HOUR

AJMP TIME

DSUBB_HOUR:

MOV R1,DHOUR

CJNE R1,#00H,DSUBB_HOUR_OPT

MOV DHOUR,#17H

AJMP TIME

DSUBB_HOUR_OPT:

DEC DHOUR

AJMP TIME

WAIT_BTN2_UP:

JNB P0.1,TIME

CLR SET_BTN.1

AJMP TIME

TIME:LJMP TIME1

GDS:CLR DSBZ.0

LJMP TIME

ADDTIME:JB SET_BTN.2,WAIT_BTN3_UP

ACALL DELAY2

JB P0.2, TIME

SETB SET_BTN.2

JB SPL.1,ADD_HOUR

JB SPL.2,ADD_MIN

JB SPL.3,DADD_HOUR

JB SPL.4,DADD_MIN

JB SPL.5,KDS

LJMP TIME

ADD_MIN:MOV R1,MINUTE

CJNE R1,#3BH,ADD_MIN_OPT

MOV MINUTE,#00H

LJMP TIME

ADD_MIN_OPT:

INC MINUTE

LJMP TIME

DADD_MIN:

MOV R1,DMINUTE

CJNE R1,#3BH,DADD_MIN_OPT

MOV DMINUTE,#00H

LJMP TIME

DADD_MIN_OPT:

INC DMINUTE

LJMP TIME

ADD_HOUR:

MOV R1,HOUR

CJNE R1,#17H,ADD_HOUR_OPT

MOV HOUR,#00H

LJMP TIME

ADD_HOUR_OPT:

INC HOUR

LJMP TIME

DADD_HOUR:

MOV R1,DHOUR

CJNE R1,#17H,DADD_HOUR_OPT

MOV DHOUR,#00H

LJMP TIME

DADD_HOUR_OPT:

INC DHOUR

LJMP TIME

WAIT_BTN3_UP:

JNB P0.2,TIME

CLR SET_BTN.2

LJMP TIME

KDS:SETB DSBZ.0

LJMP TIME

JUST_TIME1:

JB SET_BTN.0,WAIT_UP

ACALL DELAY2

JB P0.0, TIME

SETB SET_BTN.0

MOV R1,AJBZ

CJNE R1,#05H,INC1

MOV AJBZ,#00H

MOV SPL,#00H

LJMP TIME

INC1:INC AJBZ

MOV R1,AJBZ

CJNE R1,#01H,JSFZ ;计时分钟

SETB SPL.1

LJMP TIME

JSFZ:CJNE R1,#02H,DSX ;定时小时

CLR SPL.1

SETB SPL.2

LJMP TIME

DSX:CJNE R1,#03H,DSFZ ;定时分钟

CLR SPL.2

SETB SPL.3

LJMP TIME

DSFZ:CJNE R1,#04H,DSKG ;定时开关

CLR SPL.3

SETB SPL.4

DSKG:CJNE R1,#05H,LJUMP_TIME ;返回显示状态

CLR SPL.4

SETB SPL.5

LJUMP_TIME:

LJMP TIME

WAIT_UP:JNB P0.0,LJUMP_TIME ;等待按键松开,松开后清零按键标志

CLR SET_BTN.0

LJMP TIME

WAIT2_DL1:

ACALL DELAY1

ACALL DELAY1

RET

HOUR_SHOW:

JNB SPL.1, HOUR_SHOW_HRER

JB SPL.0, HOUR_SHOW_HRER

ACALL WAIT2_DL1

RET

HOUR_SHOW_HRER: ;小时显示

SETB P2.6

SETB P2.7

CLR A

MOV A,HOUR

MOV B,#0AH

DIV AB ;小时十位在A中,个位在B中

MOVC A,@A+DPTR

MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据

MOV P1,A

CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)

;延时

ACALL DELAY1

SETB P2.7 ;熄灭小时

MOV P1,#00H

MOV A,B ;B中存放的小时各位数据放入A

MOVC A,@A+DPTR

MOV P1,A

CLR P2.6 ;显示小时个位数据

;延时

ACALL DELAY1

SETB P2.6

MOV P1,#00H

RET

MINUTE_SHOW:

JNB SPL.2, MINUTE_SHOW_HERE

JB SPL.0, MINUTE_SHOW_HERE

ACALL WAIT2_DL1

RET

MINUTE_SHOW_HERE:

SETB P2.5

SETB P2.4

CLR A

MOV A,MINUTE

MOV B,#0AH

DIV AB

MOVC A,@A+DPTR

MOV P1,#00H

MOV P1,A

CLR P2.5

;延时

ACALL DELAY1

SETB P2.5

MOV P1,#00H

MOV A,B

MOVC A,@A+DPTR

MOV P1,A

CLR P2.4

;延时

ACALL DELAY1

SETB P2.4

MOV P1,#00H

RET

SECOND_SHOW:

SETB P2.3

SETB P2.2

CLR A

MOV A,SECOND

MOV B,#0AH

DIV AB

MOVC A,@A+DPTR

MOV P1,#00H

MOV P1,A

CLR P2.3

;延时

ACALL DELAY1

SETB P2.3

MOV P1,#00H

MOV A,B

MOVC A,@A+DPTR

MOV P1,A

CLR P2.2

;延时

ACALL DELAY1

SETB P2.2

JNB DSBZ.0,DYFH ;定时比较开始

JB P3.0,DYFH

MOV A,HOUR

CJNE A,DHOUR,DYFH

MOV A,MINUTE

CJNE A,DMINUTE,DYFH

SETB P3.0

DYFH:RET

DHOUR_SHOW: ;调整定时时间显示

JNB SPL.3,XSS

JB SPL.0, XSS

ACALL WAIT2_DL1

RET

XSS:SETB P2.6

SETB P2.7

CLR A

MOV A,DHOUR

MOV B,#0AH

DIV AB ;小时十位在A中,个位在B中

MOVC A,@A+DPTR

MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据

MOV P1,A

CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)

;延时

ACALL DELAY1

SETB P2.7 ;熄灭小时

MOV P1,#00H

MOV A,B ;B中存放的小时个位数据放入A

MOVC A,@A+DPTR

MOV P1,A

CLR P2.6 ;显示小时个位数据

;延时

ACALL DELAY1

SETB P2.6

MOV P1,#00H

RET

;定时分钟显示

DMINUTE_SHOW:

JNB SPL.4,XSF

JB SPL.0, XSF

ACALL WAIT2_DL1

RET

XSF:SETB P2.5

SETB P2.4

CLR A

MOV A,DMINUTE

MOV B,#0AH

DIV AB

MOVC A,@A+DPTR

MOV P1,#00H

MOV P1,A

CLR P2.5

;延时

ACALL DELAY1

SETB P2.5

MOV P1,#00H

MOV A,B

MOVC A,@A+DPTR

MOV P1,A

CLR P2.4

;延时

ACALL DELAY1

SETB P2.4

MOV P1,#00H

RET

;定时开关显示

DSECOND_SHOW:

JNB SPL.5,XSM ;显示秒(定时开关)

JB SPL.0,XSM

ACALL WAIT2_DL1

RET

XSM:SETB P2.3

SETB P2.2

CLR A

MOV A,#00H

MOVC A,@A+DPTR

MOV P1,A

CLR P2.3

;延时

ACALL DELAY1

SETB P2.3

MOV P1,#00H

JNB DSBZ.0,GBZ ;关标志

MOV A,#0BH

AJMP XS

GBZ:MOV A,#0AH

XS:MOVC A,@A+DPTR

MOV P1,A

CLR P2.2

;延时

ACALL DELAY1

SETB P2.2

MOV P1,#00H

RET

;短延时 ;显示短延时

DELAY1:MOV R6,#03H

DL1:MOV R7,08H

DL2:DJNZ R7,DL2

DJNZ R6,DL1

RET

;按键延时

DELAY2:MOV R6,#0AH

DL21:MOV R7,0AH

DL22:DJNZ R7,DL22

DJNZ R6,DL21

RET

IT_1:PUSH ACC

PUSH B

PUSH PSW

INC COUNT1

MOV A,COUNT1

CJNE A,#28H,RETI_LABLE

INC COUNT2

MOV COUNT1,#00H

MOV A,COUNT2

MOV B,#32H

DIV AB

MOV A,B

JNZ C2_OPT

CPL P3.7 ;秒的闪烁

CPL SPL.0 ;调整闪烁

C2_OPT:MOV A,COUNT2

CJNE A,#64H,RETI_LABLE

INC 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_LABLE

MOV HOUR,#00H

RETI_LABLE:

POP PSW

POP B

POP ACC

RETI

;TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H ;共阴码表

TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,8EH,0C8H ;共阳码表

; 0 1 2 3 4 5 6 7 8 9 F N

END

有时、分、秒显示,可以定时驱动继电器来控制你的家用电器,具体使用方法看程序吧,程序懂了你就能做出来了

求类似墨香铜臭《天官赐福》里男主的朋友都很有趣的小说,只要呆一起就各种无厘头搞笑的那种风格。

我有一个秘密by西西特

黄单的痛感神经天生异于常人,磕破点皮,他能痛的浑身冒冷汗,说不出话来。莫名其妙开始穿越,跟着系统先生做任务以后……在第一个世界,黄单就体会到了什么叫痛的死去活来,活来再死去。

这里攻有个朋友性格有些迷,行事有些搞笑,再加上男主们也是有些迷的,而且剧情很棒,所以可以值得推荐一看。四刷五刷了,完全不会腻!

  • 评论列表:
  •  囤梦淤浪
     发布于 2022-06-01 23:07:00  回复该评论
  • 中断入口地址 AJMP IT_1 ORG 040H MAIN:MOV SPL,#00H ;闪烁标志清零 MOV DPTR,#TABLE ;码段首地址 M
  •  酒奴猫爷
     发布于 2022-06-01 21:39:29  回复该评论
  • 标志清零 MOV DPTR,#TABLE ;码段首地址 MOV HOUR,#00H ;小时缓存清零 MOV MINUTE,#00H ;分缓存清零 MOV DHOUR,#00H
  •  囤梦浪胚
     发布于 2022-06-01 22:15:34  回复该评论
  • OV A,HOUR MOV B,#0AH DIV AB ;小时十位在A中,个位在B中 MOVC A,@A+DPTR MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据 MOV P1,A CLR P2.7
  •  断渊心児
     发布于 2022-06-01 13:23:56  回复该评论
  • MINUTE AJMP TIMEDSUBB_MIN: MOV R1,DMINUTE CJNE R1,#00H,DSUBB_MIN_OPT MOV

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.