old_sec=now.second()

void loop(void) {
digitalWrite(13, HIGH);
Point p = ts.getPoint();
digitalWrite(13, LOW);
pinMode(XM, OUTPUT);
pinMode(YP, OUTPUT);
p.x = map(p.x, TS_MAXX, TS_MINX, tft.width(), 0);
p.y = map(p.y, TS_MAXY, TS_MINY, tft.height(), 0);
//tft.setTextWrap(false);
DateTime now=RTC.now();
if (temp_sec!=now.second()){
temp_sec=now.second();
if (now.second()%2==0)
{
tft.fillRect(80,70,7,7,GREEN);
tft.fillRect(80,90,7,7,GREEN);
}
else
{
tft.fillRect(80,70,7,7,WHITE);
tft.fillRect(80,90,7,7,WHITE);
}}}

this code display fillrect normally until addin
if (temp_sec!=now.second()){
temp_sec=now.second();

i want the fillrect update every second without delay(),so i add
if temp_sec!=now.second() {
temp_sec=now.second();
if (now.seconf()%2==0{
fillrect....black
else
fillrecr ..white

so the fillrect no screen update after temp_sec=now.second()
why!!!!!!!!!!!!!!

You have posted your code incorrectly. Read the sticky at the top of the forum for how.

No recognized style allows for }}}. So, stop that crap.

Use Tools + Auto Format BEFORE posting poorly indented code.

Add some Serial.print() statements to find out what your code is doing, if proper indentation does not reveal the problem.